mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into cts-7290
This commit is contained in:
commit
08dab417d0
@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.12.5-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.12.6-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
|
@ -55,7 +55,7 @@ class Cfg3DEN {
|
||||
};
|
||||
class Category: ctrlToolboxPictureKeepAspect {
|
||||
idc = IDC_ATTRIBUTE_CATEGORY;
|
||||
onToolBoxSelChanged = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeCategory));
|
||||
x = QUOTE(5 * ATTRIBUTE_W);
|
||||
y = QUOTE(15 * ATTRIBUTE_H);
|
||||
w = QUOTE(125 * ATTRIBUTE_W);
|
||||
@ -129,7 +129,14 @@ class Cfg3DEN {
|
||||
};
|
||||
class SearchButton: ctrlButtonPicture {
|
||||
idc = IDC_ATTRIBUTE_SEARCH_BUTTON;
|
||||
onButtonClick = QUOTE(((ctrlParentControlsGroup (_this select 0)) controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR) ctrlSetText ''; [ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onButtonClick = QUOTE( \
|
||||
params ['_searchButton']; \
|
||||
private _controlsGroup = ctrlParentControlsGroup _searchButton; \
|
||||
private _searchBar = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR; \
|
||||
_searchBar ctrlSetText ''; \
|
||||
ctrlSetFocus _searchBar; \
|
||||
[_controlsGroup] call FUNC(attributeAddItems); \
|
||||
);
|
||||
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
|
||||
x = QUOTE(5 * ATTRIBUTE_W);
|
||||
y = QUOTE(101.83 * ATTRIBUTE_H);
|
||||
@ -140,9 +147,16 @@ class Cfg3DEN {
|
||||
class SearchBar: ctrlEdit {
|
||||
idc = IDC_ATTRIBUTE_SEARCHBAR;
|
||||
onKeyUp = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onMouseButtonClick = QUOTE( \
|
||||
params [ARR_2('_searchBar','_button')]; \
|
||||
if (_button != 1) exitWith {}; \
|
||||
_searchBar ctrlSetText ''; \
|
||||
ctrlSetFocus _searchBar; \
|
||||
[ctrlParentControlsGroup _searchBar] call FUNC(attributeAddItems); \
|
||||
);
|
||||
x = QUOTE(11 * ATTRIBUTE_W);
|
||||
y = QUOTE(101.83 * ATTRIBUTE_H);
|
||||
w = QUOTE(55 * ATTRIBUTE_W);
|
||||
w = QUOTE(40 * ATTRIBUTE_W);
|
||||
h = QUOTE(5 * ATTRIBUTE_H);
|
||||
};
|
||||
class ClearButton: ctrlButton {
|
||||
@ -162,6 +176,27 @@ class Cfg3DEN {
|
||||
tooltip = CSTRING(AttributeExport_Tooltip);
|
||||
x = QUOTE(79 * ATTRIBUTE_W);
|
||||
};
|
||||
class ImportButton: ClearButton {
|
||||
idc = IDC_ATTRIBUTE_IMPORT_BUTTON;
|
||||
onButtonClick = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeImport));
|
||||
text = CSTRING(buttonImportText);
|
||||
tooltip = CSTRING(AttributeImport_Tooltip);
|
||||
x = QUOTE(53 * ATTRIBUTE_W);
|
||||
};
|
||||
class AddCompatible: ctrlButton {
|
||||
idc = IDC_ATTRIBUTE_ADD_COMPATIBLE;
|
||||
style = ST_CENTER;
|
||||
onButtonClick = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddCompatible));
|
||||
text = CSTRING(AttributeAddCompatible_DisplayName);
|
||||
tooltip = CSTRING(AttributeAddCompatible_Tooltip);
|
||||
font = "RobotoCondensedLight";
|
||||
x = QUOTE(98.75 * ATTRIBUTE_W);
|
||||
y = QUOTE(10.5 * ATTRIBUTE_H);
|
||||
w = QUOTE(31.25 * ATTRIBUTE_W);
|
||||
h = QUOTE(4 * ATTRIBUTE_H);
|
||||
sizeEx = QUOTE(4 * ATTRIBUTE_H);
|
||||
colorBackground[] = {0, 0, 0, 0.5};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -2,9 +2,12 @@ PREP(addDefaultLoadout);
|
||||
PREP(addListBoxItem);
|
||||
PREP(addStat);
|
||||
PREP(addVirtualItems);
|
||||
PREP(attributeAddCompatible);
|
||||
PREP(attributeAddItems);
|
||||
PREP(attributeCategory);
|
||||
PREP(attributeClear);
|
||||
PREP(attributeDblClick);
|
||||
PREP(attributeImport);
|
||||
PREP(attributeInit);
|
||||
PREP(attributeKeyDown);
|
||||
PREP(attributeLoad);
|
||||
|
@ -162,6 +162,8 @@
|
||||
#define IDC_ATTRIBUTE_SEARCHBAR 8106
|
||||
#define IDC_ATTRIBUTE_CLEAR_BUTTON 8107
|
||||
#define IDC_ATTRIBUTE_EXPORT_BUTTON 8108
|
||||
#define IDC_ATTRIBUTE_IMPORT_BUTTON 8109
|
||||
#define IDC_ATTRIBUTE_ADD_COMPATIBLE 8110
|
||||
|
||||
#define SYMBOL_ITEM_NONE "−"
|
||||
#define SYMBOL_ITEM_REMOVE "×"
|
||||
|
75
addons/arsenal/functions/fnc_attributeAddCompatible.sqf
Normal file
75
addons/arsenal/functions/fnc_attributeAddCompatible.sqf
Normal file
@ -0,0 +1,75 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\defines.hpp"
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Adds compatible attachments or magazines for all weapons in 3DEN attribute.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Attribute controls group <CONTROL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [CONTROL] call ace_arsenal_fnc_attributeAddCompatible
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_controlsGroup"];
|
||||
|
||||
private _category = lbCurSel (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_CATEGORY);
|
||||
|
||||
// Exit if selected category is not attachments or magazines
|
||||
if !(_category in [4, 5, 6, 7, 8]) exitWith {};
|
||||
|
||||
private _configItems = +(uiNamespace getVariable [QGVAR(configItems), []]);
|
||||
private _attributeValue = uiNamespace getVariable [QGVAR(attributeValue), [[], 0]];
|
||||
_attributeValue params ["_attributeItems"];
|
||||
|
||||
// Get list of all weapons in attribute items
|
||||
(_configItems select 0) params ["_primaryWeapons", "_secondaryWeapons", "_handgunWeapons"];
|
||||
private _attributeWeapons = _attributeItems select {_x in _primaryWeapons || {_x in _secondaryWeapons} || {_x in _handgunWeapons}};
|
||||
|
||||
// Add compatible attachments or magazines to attribute
|
||||
private _cfgWeapons = configFile >> "CfgWeapons";
|
||||
private _itemsToAdd = [];
|
||||
|
||||
if (_category == 8) then {
|
||||
private _magazineGroups = uiNamespace getVariable QGVAR(magazineGroups);
|
||||
private _cfgMagazines = configFile >> "CfgMagazines";
|
||||
|
||||
{
|
||||
private _weaponConfig = _cfgWeapons >> _x;
|
||||
|
||||
{
|
||||
private _muzzleConfig = if (_x == "this") then {_weaponConfig} else {_weaponConfig >> _x};
|
||||
|
||||
// Only add existent magazines and ensure correct classname case
|
||||
private _magazines = getArray (_muzzleConfig >> "magazines") select {isClass (_cfgMagazines >> _x)};
|
||||
_magazines = _magazines apply {configName (_cfgMagazines >> _x)};
|
||||
_itemsToAdd append _magazines;
|
||||
|
||||
{
|
||||
_itemsToAdd append ([_magazineGroups, toLower _x] call CBA_fnc_hashGet);
|
||||
} forEach getArray (_muzzleConfig >> "magazineWell");
|
||||
} forEach getArray (_weaponConfig >> "muzzles");
|
||||
} forEach _attributeWeapons;
|
||||
} else {
|
||||
private _attachmentCategory = _category - 4;
|
||||
private _filter = ["optic", "pointer", "muzzle", "bipod"] select _attachmentCategory;
|
||||
|
||||
{
|
||||
_itemsToAdd append ([_x, _filter] call CBA_fnc_compatibleItems);
|
||||
} forEach _attributeWeapons;
|
||||
|
||||
// Only add items with scope of 2 and ensure correct classname case
|
||||
_itemsToAdd = _itemsToAdd select {getNumber (_cfgWeapons >> _x >> "scope") == 2};
|
||||
_itemsToAdd = _itemsToAdd apply {configName (_cfgWeapons >> _x)};
|
||||
};
|
||||
|
||||
_attributeItems append _itemsToAdd;
|
||||
_attributeValue set [0, _attributeItems arrayIntersect _attributeItems];
|
||||
|
||||
// Refresh the list for new items
|
||||
[_controlsGroup] call FUNC(attributeAddItems);
|
32
addons/arsenal/functions/fnc_attributeCategory.sqf
Normal file
32
addons/arsenal/functions/fnc_attributeCategory.sqf
Normal file
@ -0,0 +1,32 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\defines.hpp"
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Handles changing the category in 3DEN attribute.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Attribute controls group <CONTROL>
|
||||
* 1: Category <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [CONTROL, 0] call ace_arsenal_fnc_attributeCategory
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_controlsGroup", "_category"];
|
||||
|
||||
// Store selected category
|
||||
uiNamespace setVariable [QGVAR(attributeCategory), _category];
|
||||
|
||||
// Show add compatible items button when category is attachments or magazines
|
||||
private _compatibleButton = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_ADD_COMPATIBLE;
|
||||
private _enable = _category in [4, 5, 6, 7, 8];
|
||||
_compatibleButton ctrlEnable _enable;
|
||||
_compatibleButton ctrlShow _enable;
|
||||
|
||||
// Refresh the list for selected category
|
||||
[_controlsGroup] call FUNC(attributeAddItems);
|
49
addons/arsenal/functions/fnc_attributeImport.sqf
Normal file
49
addons/arsenal/functions/fnc_attributeImport.sqf
Normal file
@ -0,0 +1,49 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Handles importing items list from clipboard into 3DEN attribute.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Attribute controls group <CONTROL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [CONTROL] call ace_arsenal_fnc_attributeImport
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_controlsGroup"];
|
||||
|
||||
private _importList = call compile copyFromClipboard;
|
||||
|
||||
// Verify import list is in correct format
|
||||
if (isNil "_importList" || {!(_importList isEqualType [])} || {!(_importList isEqualTypeAll "")}) exitWith {
|
||||
playSound ["3DEN_notificationWarning", true];
|
||||
};
|
||||
|
||||
// Ensure imported items are in scanned config array and classname case is correct
|
||||
private _configItems = +(uiNamespace getVariable [QGVAR(configItems), []]);
|
||||
private _configItemsFlat = _configItems select [2, 16];
|
||||
_configItemsFlat append (_configItems select 0);
|
||||
_configItemsFlat append (_configItems select 1);
|
||||
|
||||
private _filteredList = [];
|
||||
|
||||
{
|
||||
private _item = _x;
|
||||
{
|
||||
private _index = _x findIf {_x == _item};
|
||||
if (_index > -1) then {
|
||||
_filteredList pushBackUnique (_x select _index);
|
||||
};
|
||||
} forEach _configItemsFlat;
|
||||
} forEach _importList;
|
||||
|
||||
private _attributeValue = uiNamespace getVariable [QGVAR(attributeValue), [[], 0]];
|
||||
_attributeValue set [0, _filteredList];
|
||||
|
||||
// Refresh the list for new items
|
||||
[_controlsGroup] call FUNC(attributeAddItems);
|
@ -34,4 +34,8 @@ if (_value select 1 > 0) then {
|
||||
(_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_LIST_RIGHT) ctrlSetText SYMBOL_ITEM_REMOVE;
|
||||
};
|
||||
|
||||
[_controlsGroup] call FUNC(attributeAddItems);
|
||||
// Trigger category selection for last selected category to populate list
|
||||
private _category = uiNamespace getVariable [QGVAR(attributeCategory), 0];
|
||||
(_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_CATEGORY) lbSetCurSel _category;
|
||||
|
||||
[_controlsGroup, _category] call FUNC(attributeCategory);
|
||||
|
@ -57,7 +57,7 @@ private _configCfgWeapons = configFile >> "CfgWeapons"; //Save this lookup in va
|
||||
case (_itemInfoType == TYPE_HEADGEAR): {
|
||||
(_cargo select 3) pushBackUnique _className;
|
||||
};
|
||||
/* Uniform */\
|
||||
/* Uniform */
|
||||
case (_itemInfoType == TYPE_UNIFORM): {
|
||||
(_cargo select 4) pushBackUnique _className;
|
||||
};
|
||||
|
@ -103,6 +103,7 @@
|
||||
<Key ID="STR_ACE_Arsenal_buttonSaveTooltip_shiftClick">
|
||||
<English>[Shift+Click to save to mission defaults]</English>
|
||||
<Japanese>[Shift + クリック] でミッション標準として保存します</Japanese>
|
||||
<Polish>Shift + Klik aby zapisac jako domyślne dla misji </Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonRenameText">
|
||||
<English>Rename</English>
|
||||
@ -824,7 +825,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Whitelist">
|
||||
<English>Whitelist</English>
|
||||
<Polish>Biała lista</Polish>
|
||||
<Polish>Biała lista (lista wybranych)</Polish>
|
||||
<Spanish>Lista blanca</Spanish>
|
||||
<German>Whitelist</German>
|
||||
<Czech>Seznam povolených</Czech>
|
||||
@ -842,7 +843,7 @@
|
||||
<English>Blacklist</English>
|
||||
<Japanese>禁止リスト</Japanese>
|
||||
<Italian>Lista Nera</Italian>
|
||||
<Polish>Czarna lista</Polish>
|
||||
<Polish>Czarna lista (lista wykluczeń)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Items">
|
||||
<English>Items</English>
|
||||
@ -866,6 +867,18 @@
|
||||
<Italian>Esporta l'attuale lista di elementi come un array, per essere usati negli script</Italian>
|
||||
<Polish>Eksportuj obecną listę przedmiotów jako tablicę do wykorzystania w skryptach</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeImport_Tooltip">
|
||||
<English>Import items list array from clipboard (should be the same format as export)</English>
|
||||
<Polish>Zaimportuj listę przedmiotów ze schowka (lista musi być w tym samym formacie jak przy exporcie)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeAddCompatible_DisplayName">
|
||||
<English>Add Compatible Items</English>
|
||||
<Polish>Dodaj kompatybilne przedmioty</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeAddCompatible_Tooltip">
|
||||
<English>Will automatically add compatible attachments or magazines (based on selected category) for all weapons in current items list</English>
|
||||
<Polish>Automatycznie doda kompatybilne dodatki oraz magazynki (odpowiednio do każdej kategorii) dla wszystkich broni na liście</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statTTL">
|
||||
<English>Time to live</English>
|
||||
<French>Durée de vie</French>
|
||||
|
@ -347,7 +347,7 @@ GVAR(menuRun) = true;
|
||||
GVAR(digit4) = floor (GVAR(wp0) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
|
||||
GVAR(digit5) = floor (GVAR(wp0) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
|
||||
GVAR(digit6) = floor (GVAR(wp0) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
|
||||
GVAR(digit7) = floor (GVAR(wp0) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit7) = floor (GVAR(wp0) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit8) = floor (GVAR(wp0) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
|
||||
};
|
||||
case 1: {
|
||||
@ -357,7 +357,7 @@ GVAR(menuRun) = true;
|
||||
GVAR(digit4) = floor (GVAR(wp1) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
|
||||
GVAR(digit5) = floor (GVAR(wp1) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
|
||||
GVAR(digit6) = floor (GVAR(wp1) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
|
||||
GVAR(digit7) = floor (GVAR(wp1) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit7) = floor (GVAR(wp1) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit8) = floor (GVAR(wp1) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
|
||||
};
|
||||
case 2: {
|
||||
@ -367,7 +367,7 @@ GVAR(menuRun) = true;
|
||||
GVAR(digit4) = floor (GVAR(wp2) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
|
||||
GVAR(digit5) = floor (GVAR(wp2) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
|
||||
GVAR(digit6) = floor (GVAR(wp2) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
|
||||
GVAR(digit7) = floor (GVAR(wp2) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit7) = floor (GVAR(wp2) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit8) = floor (GVAR(wp2) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
|
||||
};
|
||||
case 3: {
|
||||
@ -377,7 +377,7 @@ GVAR(menuRun) = true;
|
||||
GVAR(digit4) = floor (GVAR(wp3) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
|
||||
GVAR(digit5) = floor (GVAR(wp3) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
|
||||
GVAR(digit6) = floor (GVAR(wp3) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
|
||||
GVAR(digit7) = floor (GVAR(wp3) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit7) = floor (GVAR(wp3) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit8) = floor (GVAR(wp3) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
|
||||
};
|
||||
case 4: {
|
||||
@ -387,7 +387,7 @@ GVAR(menuRun) = true;
|
||||
GVAR(digit4) = floor (GVAR(wp4) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
|
||||
GVAR(digit5) = floor (GVAR(wp4) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
|
||||
GVAR(digit6) = floor (GVAR(wp4) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
|
||||
GVAR(digit7) = floor (GVAR(wp4) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit7) = floor (GVAR(wp4) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit8) = floor (GVAR(wp4) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
|
||||
};
|
||||
};
|
||||
@ -457,7 +457,7 @@ GVAR(menuRun) = true;
|
||||
GVAR(digit4) = floor(_gridVector / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
|
||||
GVAR(digit5) = floor(_gridVector / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
|
||||
GVAR(digit6) = floor(_gridVector / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
|
||||
GVAR(digit7) = floor(_gridVector / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit7) = floor(_gridVector / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
|
||||
GVAR(digit8) = floor(_gridVector - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
|
||||
};
|
||||
if (GVAR(F3)) then {
|
||||
|
@ -148,66 +148,79 @@
|
||||
<English>Deploy 12m ropes</English>
|
||||
<French>Déployer les cordes 12m</French>
|
||||
<Japanese>12m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 12 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_deployRopes15">
|
||||
<English>Deploy 15m ropes</English>
|
||||
<French>Déployer les cordes 15m</French>
|
||||
<Japanese>15m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 15 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_deployRopes18">
|
||||
<English>Deploy 18m ropes</English>
|
||||
<French>Déployer les cordes 18m</French>
|
||||
<Japanese>18m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 18 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_deployRopes27">
|
||||
<English>Deploy 27m ropes</English>
|
||||
<French>Déployer les cordes 27m</French>
|
||||
<Japanese>27m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 27 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_deployRopes36">
|
||||
<English>Deploy 36m ropes</English>
|
||||
<French>Déployer les cordes 36m</French>
|
||||
<Japanese>36m ロープを展開</Japanese>
|
||||
<Polish>Wysuń linę o długości 36 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Ropesupply">
|
||||
<English>[ACE] Ropes Supply crate</English>
|
||||
<French>[ACE] Caisse de Cordes</French>
|
||||
<Japanese>[ACE] ロープ収納箱</Japanese>
|
||||
<Polish>Skrzynia z linami ACE</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_descriptionShort">
|
||||
<English>Used to do deploy ropes from a compatibile helicopter</English>
|
||||
<French>Utilisé pour déployer des cordes depuis un hélicoptère compatible</French>
|
||||
<Japanese>対応するヘリコプターからロープを展開する為に使用されます</Japanese>
|
||||
<Polish>Używane do opuszczania lin z kompatybilnych smigłowców</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Rope_12_Display">
|
||||
<English>Rope 12.2 meters</English>
|
||||
<French>Corde 12.2 mètres</French>
|
||||
<Japanese>ロープ (12.2 メートル)</Japanese>
|
||||
<Polish>Lina, długość 12,2 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Rope_15_Display">
|
||||
<English>Rope 15.2 meters</English>
|
||||
<French>Corde 15.2 mètres</French>
|
||||
<Japanese>ロープ (15.2 メートル)</Japanese>
|
||||
<Polish>Lina, długość 15,2 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Rope_18_Display">
|
||||
<English>Rope 18.3 meters</English>
|
||||
<French>Corde 18.3 mètres</French>
|
||||
<Japanese>ロープ (18.3 メートル)</Japanese>
|
||||
<Polish>Lina, długość 18,3 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Rope_27_Display">
|
||||
<English>Rope 27.4 meters</English>
|
||||
<French>Corde 27.4 mètres</French>
|
||||
<Japanese>ロープ (27.4 メートル)</Japanese>
|
||||
<Polish>Lina, długość 27,4 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Rope_36_Display">
|
||||
<English>Rope 36.6 meters</English>
|
||||
<French>Corde 36.6 mètres</French>
|
||||
<Japanese>ロープ (36.6 メートル)</Japanese>
|
||||
<Polish>Lina, długość 36,6 m.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_setting_requireRopeItems_displayName">
|
||||
<English>Require rope item to deploy</English>
|
||||
<French>Exiger une corde pour déployer</French>
|
||||
<Japanese>展開にはロープ アイテムを必須に</Japanese>
|
||||
<Polish>Wymaga przedmiotu typu lina </Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -80,14 +80,14 @@ GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,
|
||||
if !(ACE_player getVariable ["ACE_isUnconscious", false]) then {
|
||||
if (_average > 0.30 * _gBlackOut) then {
|
||||
private _strength = ((_average - 0.30 * _gBlackOut) / (0.70 * _gBlackOut)) max 0;
|
||||
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2*(1-_strength),2*(1-_strength),0,0,0,0.1,0.5]];
|
||||
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2 * (1 - _strength),2 * (1 - _strength),0,0,0,0.1,0.5]];
|
||||
addCamShake [_strength, 1, 15];
|
||||
} else {
|
||||
private _gRedOut = MINVIRTUALG / _classCoef;
|
||||
|
||||
if (_average < -0.30 * _gRedOut) then {
|
||||
private _strength = ((abs _average - 0.30 * _gRedOut) / (0.70 * _gRedOut)) max 0;
|
||||
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[1,0.2,0.2,1],[0,0,0,0],[1,1,1,1],[2*(1-_strength),2*(1-_strength),0,0,0,0.1,0.5]];
|
||||
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[1,0.2,0.2,1],[0,0,0,0],[1,1,1,1],[2 * (1 - _strength),2 * ( 1 -_strength),0,0,0,0.1,0.5]];
|
||||
addCamShake [_strength / 1.5, 1, 15];
|
||||
};
|
||||
};
|
||||
|
Binary file not shown.
Binary file not shown.
@ -29,7 +29,7 @@ _player setVariable ["ACE_hasEarPlugsIn", true, true];
|
||||
//Force an immediate fast volume update:
|
||||
[[true]] call FUNC(updateVolume);
|
||||
|
||||
/*// No Earplugs in inventory, telling user
|
||||
[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured);*/
|
||||
// No Earplugs in inventory, telling user
|
||||
//[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured);
|
||||
|
||||
[] call FUNC(updateHearingProtection);
|
||||
|
@ -54,7 +54,7 @@ class ACE_ZeusActions {
|
||||
displayName = "$STR_repair";
|
||||
icon = "\A3\ui_f\data\igui\cfg\actions\repair_ca.paa";
|
||||
condition = QUOTE(ZEUS_ACTION_CONDITION && {-1 < (curatorSelected select 0) findIf {_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}}});
|
||||
statement = QUOTE({if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then {_x setDamage 0}} forEach (curatorSelected select 0));
|
||||
statement = QUOTE(call FUNC(repair_Statement));
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -6,4 +6,11 @@ PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
DFUNC(repair_Statement) = { // moved from config because of build problems
|
||||
TRACE_1("repair_Statement",_this);
|
||||
{
|
||||
if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then { _x setDamage 0; };
|
||||
} forEach (curatorSelected select 0)
|
||||
};
|
||||
|
||||
ADDON = true;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#define MAJOR 3
|
||||
#define MINOR 12
|
||||
#define PATCHLVL 5
|
||||
#define BUILD 40
|
||||
#define PATCHLVL 6
|
||||
#define BUILD 43
|
||||
|
@ -101,6 +101,7 @@
|
||||
<English>Creator</English>
|
||||
<German>Ersteller</German>
|
||||
<Japanese>設置者</Japanese>
|
||||
<Polish>Twórca</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1653,7 +1653,7 @@
|
||||
<German>Kochsalzlösung (500ml)</German>
|
||||
<Hungarian>0,9%-os sósvíz-infúzió (500ml)</Hungarian>
|
||||
<Italian>Soluzione salina EV (500ml)</Italian>
|
||||
<Portuguese>Soro IV (1000ml)</Portuguese>
|
||||
<Portuguese>Soro IV (500ml)</Portuguese>
|
||||
<Czech>Fyziologický roztok (500ml)</Czech>
|
||||
<Japanese>生理食塩水 IV (500ml)</Japanese>
|
||||
<Korean>생리식염수 IV (500ml)</Korean>
|
||||
@ -1669,7 +1669,7 @@
|
||||
<German>Kochsalzlösung (250ml)</German>
|
||||
<Hungarian>0,9%-os sósvíz-infúzió (250ml)</Hungarian>
|
||||
<Italian>Soluzione salina EV (250ml)</Italian>
|
||||
<Portuguese>Soro IV (1000ml)</Portuguese>
|
||||
<Portuguese>Soro IV (250ml)</Portuguese>
|
||||
<Czech>Fyziologický roztok (250ml)</Czech>
|
||||
<Japanese>生理食塩水 IV (250ml)</Japanese>
|
||||
<Korean>생리식염수 IV (250ml)</Korean>
|
||||
@ -3180,10 +3180,12 @@
|
||||
<Key ID="STR_ACE_Medical_menuTypeStyleSelf_displayName">
|
||||
<English>Show medical interaction for self</English>
|
||||
<Japanese>自分に治療インタラクションを表示</Japanese>
|
||||
<Polish>Pokaż menu interakcji medycznej dla postaci</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_menuTypeStyleSelf_description">
|
||||
<English>Show the self interaction medical actions</English>
|
||||
<Japanese>セルフ インタラクションに治療動作を表示します。</Japanese>
|
||||
<Polish>Pokaż elementy menu interakcji medycznej dla postaci</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_useSelection">
|
||||
<English>Selections (3d)</English>
|
||||
@ -5700,14 +5702,17 @@
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_convertItems_DisplayName">
|
||||
<English>Convert vanilla items</English>
|
||||
<Japanese>標準アイテムを変換</Japanese>
|
||||
<Polish>Skonwertuj przedmioty z Army3 (vanilia) na przedmioty medyczne ACE3</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_convertItems_Description">
|
||||
<English>Enables or disables whether vanilla medical items are converted to ACE medical items or just removed</English>
|
||||
<Japanese>有効化すると標準の治療アイテムを ACE 治療アイテムへ変換し、無効化すると削除します。</Japanese>
|
||||
<Polish>Decyduje czy oryginalne przedmioty medyczne z Army 3 mają być skonwertowane na przedmioty medyczne ACE3 czy usunięte</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_convertItems_remove">
|
||||
<English>Just remove vanilla medical</English>
|
||||
<Japanese>標準の治療アイテムを削除</Japanese>
|
||||
<Polish>Usuń przedmioty z Army 3 (vanilia)</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -4,13 +4,7 @@ class ACE_ZeusActions {
|
||||
displayName = CSTRING(Rearm);
|
||||
icon = QPATHTOF(ui\icon_rearm_interact.paa);
|
||||
condition = QUOTE(ZEUS_ACTION_CONDITION && {-1 < (curatorSelected select 0) findIf {_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}}});
|
||||
statement = QUOTE( \
|
||||
{ \
|
||||
if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then { \
|
||||
[ARR_2(objNull,_x)] call ace_rearm_fnc_rearmEntireVehicleSuccess; \
|
||||
}; \
|
||||
} forEach (curatorSelected select 0); \
|
||||
);
|
||||
statement = QUOTE(call FUNC(rearm_statement));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -8,4 +8,13 @@ PREP_RECOMPILE_END;
|
||||
|
||||
#include "initSettings.sqf"
|
||||
|
||||
DFUNC(rearm_statement) = { // moved from config because of build problems
|
||||
TRACE_1("rearm_statement",_this);
|
||||
{
|
||||
if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then {
|
||||
[objNull, _x] call FUNC(rearmEntireVehicleSuccess);
|
||||
};
|
||||
} forEach (curatorSelected select 0);
|
||||
};
|
||||
|
||||
ADDON = true;
|
||||
|
@ -456,8 +456,7 @@ class CfgVehicles {
|
||||
GVAR(hitpointPositions)[] = {{"HitTurret", {0,-2,0}}};
|
||||
};
|
||||
|
||||
class Car_F;
|
||||
class Offroad_01_base_F: Car_F {};
|
||||
class Offroad_01_base_F;
|
||||
class Offroad_01_repair_base_F: Offroad_01_base_F {
|
||||
GVAR(canRepair) = 1;
|
||||
transportRepair = 0;
|
||||
@ -483,7 +482,25 @@ class CfgVehicles {
|
||||
GVAR(canRepair) = 0;
|
||||
};
|
||||
|
||||
class Truck_03_base_F;
|
||||
class Car_F: Car {
|
||||
class HitPoints;
|
||||
};
|
||||
class Truck_F: Car_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitLBWheel;
|
||||
class HitRBWheel;
|
||||
};
|
||||
};
|
||||
class Truck_03_base_F: Truck_F {
|
||||
class HitPoints: HitPoints {
|
||||
class HitLBWheel: HitLBWheel {
|
||||
name = "wheel_1_4_steering"; // return original values back to fix double wheel hitpoint
|
||||
};
|
||||
class HitRBWheel: HitRBWheel {
|
||||
name = "wheel_2_4_steering";
|
||||
};
|
||||
};
|
||||
};
|
||||
class O_Truck_03_repair_F: Truck_03_base_F {
|
||||
GVAR(canRepair) = 1;
|
||||
transportRepair = 0;
|
||||
|
@ -34,7 +34,7 @@ if (_type in _initializedClasses) exitWith {};
|
||||
private _hitPointsAddedNames = [];
|
||||
private _hitPointsAddedStrings = [];
|
||||
private _hitPointsAddedAmount = [];
|
||||
private _processedHitpoints = [];
|
||||
private _processedSelections = [];
|
||||
private _icon = ["a3\ui_f\data\igui\cfg\actions\repair_ca.paa", "#FFFFFF"];
|
||||
|
||||
// Custom position can be defined via config for associated hitpoint
|
||||
@ -47,7 +47,7 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR
|
||||
private _hitpoint = toLower (_hitPoints select _forEachIndex);
|
||||
if (_selection in _wheelHitSelections) then {
|
||||
// Wheels should always be unique
|
||||
if (_hitpoint in _processedHitpoints) exitWith {TRACE_3("Duplicate Wheel",_hitpoint,_forEachIndex,_selection);};
|
||||
if (_selection in _processedSelections) exitWith {TRACE_3("Duplicate Wheel",_hitpoint,_forEachIndex,_selection);};
|
||||
|
||||
private _position = compile format ["_target selectionPosition ['%1', 'HitPoints'];", _selection];
|
||||
|
||||
@ -68,13 +68,15 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR
|
||||
_statement = {[_this select 1, _this select 0, _this select 2 select 0, "ReplaceWheel"] call DFUNC(repair)};
|
||||
_action = [_name, _text, _icon, _statement, _condition, {}, [_hitpoint], _position, 2] call EFUNC(interact_menu,createAction);
|
||||
[_type, 0, [], _action] call EFUNC(interact_menu,addActionToClass);
|
||||
|
||||
_processedSelections pushBack _selection;
|
||||
} else {
|
||||
// Empty selections don't exist
|
||||
if (_selection isEqualTo "") exitWith { TRACE_3("Skipping Empty Sel",_hitpoint,_forEachIndex,_selection); };
|
||||
// Empty hitpoints don't contain enough information
|
||||
if (_hitpoint isEqualTo "") exitWith { TRACE_3("Skipping Empty Hit",_hitpoint,_forEachIndex,_selection); };
|
||||
// Ignore glass hitpoints
|
||||
if ((_hitPoint find "glass") != -1) exitWith { TRACE_3("Skipping Glass",_hitpoint,_forEachIndex,_selection); };
|
||||
if ((_hitpoint find "glass") != -1) exitWith { TRACE_3("Skipping Glass",_hitpoint,_forEachIndex,_selection); };
|
||||
// Ignore hitpoints starting with # (seems to be lights)
|
||||
if ((_hitpoint select [0,1]) == "#") exitWith { TRACE_3("Skipping # hit",_hitpoint,_forEachIndex,_selection); };
|
||||
// Ignore ERA/Slat armor (vanilla uses hitera_/hitslat_, pre-1.82 RHS uses era_)
|
||||
@ -125,7 +127,7 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR
|
||||
|
||||
if (_hitpoint in TRACK_HITPOINTS) then {
|
||||
// Tracks should always be unique
|
||||
if (_hitpoint in _processedHitpoints) exitWith {TRACE_3("Duplicate Track",_hitpoint,_forEachIndex,_selection);};
|
||||
if (_selection in _processedSelections) exitWith {TRACE_3("Duplicate Track",_hitpoint,_forEachIndex,_selection);};
|
||||
_position = compile format ["private _return = _target selectionPosition ['%1', 'HitPoints']; _return set [1, 0]; _return", _selection];
|
||||
TRACE_4("Adding RepairTrack",_hitpoint,_forEachIndex,_selection,_text);
|
||||
private _condition = {[_this select 1, _this select 0, _this select 2 select 0, "RepairTrack"] call DFUNC(canRepair)};
|
||||
@ -145,7 +147,7 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR
|
||||
};
|
||||
};
|
||||
|
||||
_processedHitPoints pushBack _hitpoint;
|
||||
_processedSelections pushBack _selection;
|
||||
};
|
||||
} forEach _hitSelections;
|
||||
|
||||
|
@ -60,7 +60,19 @@ if (_unit getVariable [QGVAR(actionID), -1] == -1) then {
|
||||
};
|
||||
|
||||
if (_muzzle isEqualType "") then {
|
||||
private _laserEnabled = _unit isIRLaserOn _weapon || {_unit isFlashlightOn _weapon};
|
||||
|
||||
_unit selectWeapon _muzzle;
|
||||
|
||||
if (
|
||||
_laserEnabled
|
||||
&& {
|
||||
_muzzle == primaryWeapon _unit // prevent UGL switch
|
||||
|| {"" == primaryWeapon _unit} // Arma switches to primary weapon if exists
|
||||
}
|
||||
) then {
|
||||
{_unit action [_x, _unit]} forEach ["GunLightOn", "IRLaserOn"];
|
||||
};
|
||||
};
|
||||
|
||||
// play fire mode selector sound
|
||||
|
@ -30,8 +30,20 @@ if (_safedWeapons isEqualTo []) then {
|
||||
_unit setVariable [QGVAR(actionID), -1];
|
||||
};
|
||||
|
||||
private _laserEnabled = _unit isIRLaserOn _weapon || {_unit isFlashlightOn _weapon};
|
||||
|
||||
_unit selectWeapon _muzzle;
|
||||
|
||||
if (
|
||||
_laserEnabled
|
||||
&& {
|
||||
_muzzle == primaryWeapon _unit // prevent UGL switch
|
||||
|| {"" == primaryWeapon _unit} // Arma switches to primary weapon if exists
|
||||
}
|
||||
) then {
|
||||
{_unit action [_x, _unit]} forEach ["GunLightOn", "IRLaserOn"];
|
||||
};
|
||||
|
||||
if (inputAction "nextWeapon" > 0) then {
|
||||
// switch to the last mode to roll over to first after the default nextWeapon action
|
||||
// get weapon modes
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Arguments:
|
||||
* 0: Element Name <STRING>
|
||||
* 1: Show/Hide Element <BOOL>
|
||||
* 2: Show Hint <BOOL>
|
||||
* 2: Show Hint <BOOL> (default: false)
|
||||
* 3: Force change even when disallowed <BOOL> (default: false)
|
||||
*
|
||||
* Return Value:
|
||||
@ -18,12 +18,13 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_element", "_show", ["_showHint", false, [true]], ["_force", false, [true]] ];
|
||||
params ["_element", "_show", ["_showHint", false, [true]], ["_force", false, [true]]];
|
||||
|
||||
private _cachedElement = GVAR(configCache) getVariable _element;
|
||||
if (isNil "_cachedElement") exitWith {};
|
||||
if (isNil "_cachedElement") exitWith {TRACE_1("nil element",_this)};
|
||||
|
||||
if (!_force && {!GVAR(allowSelectiveUI)}) exitWith {
|
||||
TRACE_1("not allowed",_this);
|
||||
[LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured);
|
||||
false
|
||||
};
|
||||
@ -31,8 +32,14 @@ if (!_force && {!GVAR(allowSelectiveUI)}) exitWith {
|
||||
_cachedElement params ["_idd", "_elements", "_location", "_conditions"];
|
||||
|
||||
// Exit if main vehicle type condition not fitting
|
||||
private _canUseWeapon = ACE_player call CBA_fnc_canUseWeapon;
|
||||
if ((_canUseWeapon && {_location == 2}) || {!_canUseWeapon && {_location == 1}}) exitWith {false};
|
||||
private _canUseWeaponOrInCargo = ACE_player call CBA_fnc_canUseWeapon || {-1 < vehicle ACE_player getCargoIndex ACE_player};
|
||||
if (
|
||||
(_canUseWeaponOrInCargo && {_location == VEHICLE_ONLY})
|
||||
|| {!_canUseWeaponOrInCargo && {_location == GROUND_ONLY}}
|
||||
) exitWith {
|
||||
TRACE_3("skip location",_this,_canUseWeaponOrInCargo,_location);
|
||||
false
|
||||
};
|
||||
|
||||
// Get setting from config API
|
||||
{
|
||||
@ -59,7 +66,7 @@ if (!_force) then {
|
||||
};
|
||||
};
|
||||
|
||||
_show = [1, 0] select _show;
|
||||
private _fade = [1, 0] select _show;
|
||||
|
||||
// Disable/Enable elements
|
||||
private _success = false;
|
||||
@ -69,9 +76,9 @@ private _success = false;
|
||||
// Loop through IGUI displays as they can be present several times for some reason
|
||||
{
|
||||
if (_idd == ctrlIDD _x) then {
|
||||
//TRACE_3("Setting Element Visibility",_show,_idd,_idc);
|
||||
TRACE_4("Setting Element Visibility",_element,_fade,_idd,_idc);
|
||||
|
||||
(_x displayCtrl _idc) ctrlSetFade _show;
|
||||
(_x displayCtrl _idc) ctrlSetFade _fade;
|
||||
(_x displayCtrl _idc) ctrlCommit 0;
|
||||
|
||||
_success = true;
|
||||
|
@ -1522,10 +1522,12 @@
|
||||
<Key ID="STR_ACE_Zeus_moduleCargoParadrop_DisplayName">
|
||||
<English>Paradrop Cargo</English>
|
||||
<Japanese>カーゴを空中投下</Japanese>
|
||||
<Polish>Zrzut ładunku (cargo)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_paradrop_noCargoLoaded">
|
||||
<English>No cargo loaded</English>
|
||||
<Japanese>カーゴは未積載</Japanese>
|
||||
<Polish>Niczego nie załadowano do cargo</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -9,16 +9,16 @@ ace:
|
||||
version:
|
||||
major: 3
|
||||
minor: 12
|
||||
patch: 5
|
||||
build: 40
|
||||
patch: 6
|
||||
build: 43
|
||||
|
||||
acex:
|
||||
githubUrl: https://github.com/acemod/ACEX
|
||||
version:
|
||||
major: 3
|
||||
minor: 4
|
||||
patch: 1
|
||||
build: 11
|
||||
patch: 2
|
||||
build: 13
|
||||
|
||||
|
||||
markdown: kramdown
|
||||
|
@ -9,16 +9,16 @@ ace:
|
||||
version:
|
||||
major: 3
|
||||
minor: 12
|
||||
patch: 4
|
||||
build: 39
|
||||
patch: 6
|
||||
build: 43
|
||||
|
||||
acex:
|
||||
githubUrl: https://github.com/acemod/ACEX
|
||||
version:
|
||||
major: 3
|
||||
minor: 4
|
||||
patch: 0
|
||||
build: 10
|
||||
patch: 2
|
||||
build: 13
|
||||
|
||||
|
||||
markdown: kramdown
|
||||
|
@ -483,7 +483,7 @@
|
||||
{% endif %}
|
||||
|
||||
{% if include.component == "compat_rksl_pm_ii" %}
|
||||
`RKSL_PMII`
|
||||
`RKSL_PMII`, `RKSL_PMII_525`
|
||||
{% endif %}
|
||||
|
||||
{% if include.component == "compat_sma3_iansky" %}
|
||||
|
@ -46,6 +46,7 @@ MenuType: 0 = Interaction, 1 = Self Interaction
|
||||
|----------|---------|---------|---------|---------|---------|
|
||||
|`ace_interactMenuOpened` | [_menuType] | Local | Listen | Interaction Menu Opened
|
||||
|`ace_interactMenuClosed` | [_menuType] | Local | Listen | Interaction Menu Closed
|
||||
|`ace_interact_menu_newControllableObject` | [_typeOf] | Local | Listen | New controlable object, only fires once per type (add self interactions)
|
||||
|
||||
### 2.4 Cargo (`ace_cargo`)
|
||||
|
||||
|
@ -70,7 +70,7 @@ class CAManBase: Man {
|
||||
Two steps, creating an action (array) and then adding it to either a class or object.
|
||||
Important: `ace_common_fnc_canInteractWith` is not automatically checked and needs to be explicitly called.
|
||||
|
||||
### 2.1 fnc_createAction
|
||||
### 3.1 fnc_createAction
|
||||
|
||||
`ace_interact_menu_fnc_createAction`
|
||||
|
||||
@ -91,7 +91,7 @@ Important: `ace_common_fnc_canInteractWith` is not automatically checked and nee
|
||||
*/
|
||||
```
|
||||
|
||||
### 2.2 fnc_addActionToClass
|
||||
### 3.2 fnc_addActionToClass
|
||||
|
||||
`ace_interact_menu_fnc_addActionToClass`
|
||||
|
||||
@ -107,7 +107,7 @@ Important: `ace_common_fnc_canInteractWith` is not automatically checked and nee
|
||||
```
|
||||
By default this function will not use inheritance, so actions will only be added to the specific class.
|
||||
|
||||
### 2.3 fnc_addActionToObject
|
||||
### 3.3 fnc_addActionToObject
|
||||
|
||||
`ace_interact_menu_fnc_addActionToObject`
|
||||
|
||||
@ -121,7 +121,7 @@ By default this function will not use inheritance, so actions will only be added
|
||||
*/
|
||||
```
|
||||
|
||||
### 2.4 fnc_addActionToZeus
|
||||
### 3.4 fnc_addActionToZeus
|
||||
|
||||
`ace_interact_menu_fnc_addActionToZeus`
|
||||
|
||||
@ -133,7 +133,7 @@ By default this function will not use inheritance, so actions will only be added
|
||||
*/
|
||||
```
|
||||
|
||||
### 2.5 Examples
|
||||
### 3.5 Examples
|
||||
|
||||
External:
|
||||
|
||||
@ -177,7 +177,7 @@ _action = ["myMissionEvent1","Mission Event: Play Base Alarm","",_statement,{tru
|
||||
[["ACE_ZeusActions"], _action] call ace_interact_menu_fnc_addActionToZeus;
|
||||
```
|
||||
|
||||
### 2.6 Advanced Example
|
||||
### 3.6 Advanced Example
|
||||
|
||||
This adds an interaction to a unit that allows passing items that the player is carrying.
|
||||
|
||||
@ -221,3 +221,20 @@ _modifierFunc = {
|
||||
_action = ["GiveItems", "?","",_statement,_condition,_insertChildren,[123],"",4,[false, false, false, true, false], _modifierFunc] call ace_interact_menu_fnc_createAction;
|
||||
[q3, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
|
||||
```
|
||||
|
||||
### 3.7 Using `ace_interact_menu_newControllableObject` event
|
||||
|
||||
CBA event `ace_interact_menu_newControllableObject` fires only once the first time the player controls a new object (new man, vehicle or controlled UAV)
|
||||
This is the ideal way to add self interaction actions, as adding them via `addActionToClass` will force self interaction actions to be compiled for classes that may never be used.
|
||||
|
||||
```cpp
|
||||
// Example: Add radio self-action to all civilian cars
|
||||
["ace_interact_menu_newControllableObject", {
|
||||
params ["_type"]; // string of the object's classname
|
||||
if (!(_type isKindOf "Car")) exitWith {};
|
||||
if ((getNumber (configFile >> "CfgVehicles" >> _type >> "side")) != 3) exitWith {};
|
||||
|
||||
private _action = ["playRadio","Play Radio","",{playMusic "NeverGonnaGiveYouUp"},{true}] call ace_interact_menu_fnc_createAction;
|
||||
[_type, 1, ["ACE_SelfActions"], _action, true] call ace_interact_menu_fnc_addActionToClass;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
```
|
||||
|
104
docs/wiki/frameworkx/field-rations-framework.md
Normal file
104
docs/wiki/frameworkx/field-rations-framework.md
Normal file
@ -0,0 +1,104 @@
|
||||
---
|
||||
layout: wiki
|
||||
title: Field Rations Framework
|
||||
description: Explains how to set-up ACEX Field Rations.
|
||||
group: framework
|
||||
parent: wiki
|
||||
mod: acex
|
||||
version:
|
||||
major: 3
|
||||
minor: 4
|
||||
patch: 0
|
||||
---
|
||||
|
||||
## 1. Config Values
|
||||
|
||||
### 1.1 Consumable Items
|
||||
|
||||
Config Name | Type | Description
|
||||
----------- | ---- | -----------
|
||||
`acex_field_rations_thirstQuenched` | Number | Amount of thirst quenched when item is consumed*
|
||||
`acex_field_rations_hungerSatiated` | Number | Amount of hunger satiated when item is consumed*
|
||||
`acex_field_rations_consumeTime` | Number | Time required to consume the item (in seconds)
|
||||
`acex_field_rations_consumeText` | String | Progress bar text (OPTIONAL)
|
||||
`acex_field_rations_consumeAnims` | Array | Animations to play when consuming item** (OPTIONAL)
|
||||
`acex_field_rations_consumeSounds` | Array | Sounds to play when consuming item** (OPTIONAL)
|
||||
`acex_field_rations_replacementItem` | String | Class name of replacement item to add on consumption (OPTIONAL)
|
||||
`acex_field_rations_refillItem` | String | Makes an item refillable, class name of item added when refilled (OPTIONAL)
|
||||
`acex_field_rations_refillAmount` | Number | Amount of water required to refill item (OPTIONAL)
|
||||
`acex_field_rations_refillTime` | Number | Time required to refill item (in seconds) (OPTIONAL)
|
||||
|
||||
|
||||
_* Value range is 0 to 100 and can be modified by the corresponding coefficient setting._
|
||||
|
||||
_** Array is in format: STAND, CROUCH, PRONE. If player is in vehicle, the first element is used._
|
||||
|
||||
### 1.2 Water Sources
|
||||
|
||||
Config Name | Type | Description
|
||||
----------- | ---- | -----------
|
||||
`acex_field_rations_waterSupply` | Number | Amount of water inside the object (-1 - disabled, -10 - infinite) (OPTIONAL)
|
||||
`acex_field_rations_offset` | Array | Refill action offset relative to model (OPTIONAL)
|
||||
|
||||
## 2. Events
|
||||
|
||||
Event Name | Passed Parameter(s) | Locality | Description
|
||||
---------- | ------------------- | -------- | -----------
|
||||
`acex_rationConsumed` | [_player, _consumeItem, _replacementItem, _thirstQuenched, _hungerSatiated] | Local | Item consumed
|
||||
`acex_rationRefilled` | [_source, _player, _item, _refillItem, _refillAmount] | Local | Item refilled
|
||||
|
||||
## 3. Scripting
|
||||
|
||||
### 3.1 Getting water supply
|
||||
|
||||
`acex_field_rations_fnc_getRemainingWater`
|
||||
|
||||
```cpp
|
||||
* Returns the remaining water in a source.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Water source <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Remaining water <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [_source] call acex_field_rations_fnc_getRemainingWater
|
||||
```
|
||||
|
||||
### 3.2 Setting water supply
|
||||
|
||||
`acex_field_rations_fnc_setRemainingWater`
|
||||
|
||||
```cpp
|
||||
* Sets the remaining water supply for given water source.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Water source <OBJECT>
|
||||
* 1: Amount (-10 - Infinite, -1 - Disabled) <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_source, 1000] call acex_field_rations_fnc_setRemainingWater
|
||||
```
|
||||
|
||||
### 3.3 Adding a status modifier
|
||||
|
||||
`acex_field_rations_fnc_addStatusModifier`
|
||||
|
||||
```cpp
|
||||
* Adds a status modifier. Should be called on all machines.
|
||||
* Code must return a NUMBER which will be applied additively with other status changes.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Status to modify (0 - Thirst, 1 - Hunger, 2 - Both) <NUMBER>
|
||||
* 1: Code (is passed the unit <OBJECT>) <CODE>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [0, {random 1}] call acex_field_rations_fnc_addStatusModifier
|
||||
```
|
1
include/x/cba/addons/main/$PBOPREFIX$
Normal file
1
include/x/cba/addons/main/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
x\cba\addons\main
|
1
include/x/cba/addons/xeh/$PBOPREFIX$
Normal file
1
include/x/cba/addons/xeh/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
x\cba\addons\xeh
|
@ -3,13 +3,13 @@ class CfgWeapons {
|
||||
class ItemCore;
|
||||
class InventoryOpticsItem_Base_F;
|
||||
|
||||
class RKSL_optic_PMII_312 : ItemCore {
|
||||
class RKSL_optic_PMII_312: ItemCore {
|
||||
ACE_ScopeHeightAboveRail = 4.2235;
|
||||
ACE_ScopeAdjust_Vertical[] = { -4, 30 };
|
||||
ACE_ScopeAdjust_Vertical[] = { -1, 12 };
|
||||
ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
|
||||
ACE_ScopeAdjust_VerticalIncrement = 0.1;
|
||||
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
|
||||
class ItemInfo : InventoryOpticsItem_Base_F {
|
||||
class ItemInfo: InventoryOpticsItem_Base_F {
|
||||
class OpticsModes {
|
||||
class Snip {
|
||||
discreteDistance[] = { 100 };
|
||||
@ -19,13 +19,29 @@ class CfgWeapons {
|
||||
};
|
||||
};
|
||||
|
||||
class RKSL_optic_PMII_312_sunshade : ItemCore {
|
||||
class RKSL_optic_PMII_312_sunshade: ItemCore {
|
||||
ACE_ScopeHeightAboveRail = 4.2235;
|
||||
ACE_ScopeAdjust_Vertical[] = { -4, 30 };
|
||||
ACE_ScopeAdjust_Vertical[] = { -1, 12 };
|
||||
ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
|
||||
ACE_ScopeAdjust_VerticalIncrement = 0.1;
|
||||
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
|
||||
class ItemInfo : InventoryOpticsItem_Base_F {
|
||||
class ItemInfo: InventoryOpticsItem_Base_F {
|
||||
class OpticsModes {
|
||||
class Snip {
|
||||
discreteDistance[] = { 100 };
|
||||
discreteDistanceInitIndex = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class RKSL_optic_PMII_525: ItemCore {
|
||||
ACE_ScopeHeightAboveRail = 4.2235;
|
||||
ACE_ScopeAdjust_Vertical[] = { 0, 26 };
|
||||
ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
|
||||
ACE_ScopeAdjust_VerticalIncrement = 0.1;
|
||||
ACE_ScopeAdjust_HorizontalIncrement = 0.1;
|
||||
class ItemInfo: InventoryOpticsItem_Base_F {
|
||||
class OpticsModes {
|
||||
class Snip {
|
||||
discreteDistance[] = { 100 };
|
||||
|
@ -6,9 +6,9 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"RKSL_PMII"};
|
||||
requiredAddons[] = {"RKSL_PMII", "RKSL_PMII_525"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"Ruthberg"};
|
||||
authors[] = {"Ruthberg", "Dedmen"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
|
@ -33,6 +33,8 @@ class CfgAmmo {
|
||||
// class B_556x45_Ball_Tracer_White: B_556x45_Ball {model = PATHTOF(ace_TracerWhite2.p3d);}; //New class for testing
|
||||
|
||||
class B_580x42_Ball_F: BulletBase {model = PATHTOF(ace_TracerGreen2.p3d);};
|
||||
class ACE_580x42_Ball_Tracer_Red: B_580x42_Ball_F {model = PATHTOF(ace_TracerRed2.p3d);};
|
||||
class ACE_580x42_Ball_Tracer_Yellow: B_580x42_Ball_F {model = PATHTOF(ace_TracerYellow2.p3d);};
|
||||
|
||||
class B_65x39_Caseless: BulletBase {model = PATHTOF(ace_TracerRed2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_red
|
||||
class B_65x39_Caseless_green: B_65x39_Caseless {model = PATHTOF(ace_TracerGreen2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_green
|
||||
@ -86,10 +88,14 @@ class CfgAmmo {
|
||||
class B_338_Ball: BulletBase {model = PATHTOF(ace_TracerRed2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_red
|
||||
|
||||
class B_338_NM_Ball: BulletBase {model = PATHTOF(ace_TracerRed2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_red
|
||||
class ACE_338_NM_Ball_red : B_338_NM_Ball {model = PATHTOF(ace_TracerRed2.p3d);};
|
||||
class ACE_338_NM_Ball_yellow : B_338_NM_Ball {model = PATHTOF(ace_TracerYellow2.p3d);};
|
||||
|
||||
class B_127x54_Ball: BulletBase {model = PATHTOF(ace_TracerGreen2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_green
|
||||
|
||||
class B_93x64_Ball: BulletBase {model = PATHTOF(ace_TracerGreen2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_green
|
||||
class ACE_93x64_Ball_tracer_red : B_93x64_Ball {model = PATHTOF(ace_TracerRed2.p3d);};
|
||||
class ACE_93x64_Ball_tracer_yellow : B_93x64_Ball {model = PATHTOF(ace_TracerYellow2.p3d);};
|
||||
|
||||
//Autocannon
|
||||
class B_19mm_HE: BulletBase {model = PATHTOF(ace_TracerWhite2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_white
|
||||
|
156
optionals/tracers/CfgMagazineWells.hpp
Normal file
156
optionals/tracers/CfgMagazineWells.hpp
Normal file
@ -0,0 +1,156 @@
|
||||
class CfgMagazineWells {
|
||||
class STANAG_556x45_Large {
|
||||
ADDON[] = {
|
||||
"ACE_150Rnd_556x45_Drum_green",
|
||||
"ACE_150Rnd_556x45_Drum_yellow",
|
||||
"ACE_150Rnd_556x45_Drum_tracer_green",
|
||||
"ACE_150Rnd_556x45_Drum_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_556x45_STANAG_2D_XL {
|
||||
ADDON[] = {
|
||||
"ACE_150Rnd_556x45_Drum_green",
|
||||
"ACE_150Rnd_556x45_Drum_yellow",
|
||||
"ACE_150Rnd_556x45_Drum_tracer_green",
|
||||
"ACE_150Rnd_556x45_Drum_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class M249_556x45 {
|
||||
ADDON[] = {
|
||||
"ACE_200Rnd_556x45_Box_green",
|
||||
"ACE_200Rnd_556x45_Box_tracer_green"
|
||||
};
|
||||
};
|
||||
class CBA_556x45_MINIMI {
|
||||
ADDON[] = {
|
||||
"ACE_200Rnd_556x45_Box_green",
|
||||
"ACE_200Rnd_556x45_Box_tracer_green"
|
||||
};
|
||||
};
|
||||
class CTAR_580x42 {
|
||||
ADDON[] = {
|
||||
"ACE_30Rnd_580x42_Mag_red",
|
||||
"ACE_30Rnd_580x42_Mag_yellow",
|
||||
"ACE_30Rnd_580x42_Mag_tracer_red",
|
||||
"ACE_30Rnd_580x42_Mag_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_580x42_TYPE95 {
|
||||
ADDON[] = {
|
||||
"ACE_30Rnd_580x42_Mag_red",
|
||||
"ACE_30Rnd_580x42_Mag_yellow",
|
||||
"ACE_30Rnd_580x42_Mag_tracer_red",
|
||||
"ACE_30Rnd_580x42_Mag_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CTAR_580x42_Large {
|
||||
ADDON[] = {
|
||||
"ACE_100Rnd_580x42_Drum_red",
|
||||
"ACE_100Rnd_580x42_Drum_yellow",
|
||||
"ACE_100Rnd_580x42_Drum_tracer_red",
|
||||
"ACE_100Rnd_580x42_Drum_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_580x42_TYPE95_XL {
|
||||
ADDON[] = {
|
||||
"ACE_100Rnd_580x42_Drum_red",
|
||||
"ACE_100Rnd_580x42_Drum_yellow",
|
||||
"ACE_100Rnd_580x42_Drum_tracer_red",
|
||||
"ACE_100Rnd_580x42_Drum_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class MX_65x39 {
|
||||
ADDON[] = {
|
||||
"ACE_30Rnd_65x39_mx_green",
|
||||
"ACE_30Rnd_65x39_mx_yellow",
|
||||
"ACE_30Rnd_65x39_mx_tracer_green",
|
||||
"ACE_30Rnd_65x39_mx_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_65x39_MX {
|
||||
ADDON[] = {
|
||||
"ACE_30Rnd_65x39_mx_green",
|
||||
"ACE_30Rnd_65x39_mx_yellow",
|
||||
"ACE_30Rnd_65x39_mx_tracer_green",
|
||||
"ACE_30Rnd_65x39_mx_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_65x39_MX_XL {
|
||||
ADDON[] = {
|
||||
"ACE_100Rnd_65x39_mx_green",
|
||||
"ACE_100Rnd_65x39_mx_yellow",
|
||||
"ACE_100Rnd_65x39_mx_tracer_green",
|
||||
"ACE_100Rnd_65x39_mx_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class Katiba_65x39 {
|
||||
ADDON[] = {
|
||||
"ACE_30Rnd_65x39_katiba_red",
|
||||
"ACE_30Rnd_65x39_katiba_yellow",
|
||||
"ACE_30Rnd_65x39_katiba_tracer_red",
|
||||
"ACE_30Rnd_65x39_katiba_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_65x39_Katiba {
|
||||
ADDON[] = {
|
||||
"ACE_30Rnd_65x39_katiba_red",
|
||||
"ACE_30Rnd_65x39_katiba_yellow",
|
||||
"ACE_30Rnd_65x39_katiba_tracer_red",
|
||||
"ACE_30Rnd_65x39_katiba_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class Mk200_65x39 {
|
||||
ADDON[] = {
|
||||
"ACE_200Rnd_65x39_cased_Box_green",
|
||||
"ACE_200Rnd_65x39_cased_Box_red",
|
||||
"ACE_200Rnd_65x39_cased_Box_tracer_green",
|
||||
"ACE_200Rnd_65x39_cased_Box_tracer_red"
|
||||
};
|
||||
};
|
||||
class CBA_65x39_Mk200 {
|
||||
ADDON[] = {
|
||||
"ACE_200Rnd_65x39_cased_Box_green",
|
||||
"ACE_200Rnd_65x39_cased_Box_red",
|
||||
"ACE_200Rnd_65x39_cased_Box_tracer_green",
|
||||
"ACE_200Rnd_65x39_cased_Box_tracer_red"
|
||||
};
|
||||
};
|
||||
class CBA_762x51_HK417 {
|
||||
ADDON[] = {
|
||||
"ACE_20Rnd_762x51_Mag_tracer_green",
|
||||
"ACE_20Rnd_762x51_Mag_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_762x51_M14 {
|
||||
ADDON[] = {
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_green",
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_762x51_G3 {
|
||||
ADDON[] = {
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_green",
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_762x54R_LINKS {
|
||||
ADDON[] = {
|
||||
"ACE_150Rnd_762x54_Box_red",
|
||||
"ACE_150Rnd_762x54_Box_yellow",
|
||||
"ACE_150Rnd_762x54_Box_tracer_red",
|
||||
"ACE_150Rnd_762x54_Box_tracer_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_93x64_LINKS {
|
||||
ADDON[] = {
|
||||
"ACE_150Rnd_93x64_Mag_red",
|
||||
"ACE_150Rnd_93x64_Mag_yellow"
|
||||
};
|
||||
};
|
||||
class CBA_338NM_LINKS {
|
||||
ADDON[] = {
|
||||
"ACE_130Rnd_338_Mag_green",
|
||||
"ACE_130Rnd_338_Mag_yellow"
|
||||
};
|
||||
};
|
||||
};
|
245
optionals/tracers/CfgMagazines.hpp
Normal file
245
optionals/tracers/CfgMagazines.hpp
Normal file
@ -0,0 +1,245 @@
|
||||
#define STRINGS(magazine) author = ECSTRING(common,ACETeam); displayName = CSTRING(magazine)
|
||||
|
||||
class CfgMagazines {
|
||||
|
||||
// 5.56mm
|
||||
class 150Rnd_556x45_Drum_Mag_F;
|
||||
class ACE_150Rnd_556x45_Drum_green : 150Rnd_556x45_Drum_Mag_F {
|
||||
ammo = "B_556x45_Ball_tracer_green";
|
||||
STRINGS(150Rnd_556x45_Drum_green);
|
||||
};
|
||||
class ACE_150Rnd_556x45_Drum_yellow : 150Rnd_556x45_Drum_Mag_F {
|
||||
ammo = "B_556x45_Ball_tracer_yellow";
|
||||
STRINGS(150Rnd_556x45_Drum_yellow);
|
||||
};
|
||||
|
||||
class 150Rnd_556x45_Drum_Mag_tracer_F;
|
||||
class ACE_150Rnd_556x45_Drum_tracer_green : 150Rnd_556x45_Drum_Mag_tracer_F {
|
||||
ammo = "B_556x45_Ball_tracer_green";
|
||||
STRINGS(150Rnd_556x45_Drum_tracer_green);
|
||||
descriptionShort = CSTRING(150Rnd_556x45_Drum_tracer_green_description);
|
||||
};
|
||||
class ACE_150Rnd_556x45_Drum_tracer_yellow : 150Rnd_556x45_Drum_Mag_tracer_F {
|
||||
ammo = "B_556x45_Ball_tracer_yellow";
|
||||
STRINGS(150Rnd_556x45_Drum_tracer_yellow);
|
||||
descriptionShort = CSTRING(150Rnd_556x45_Drum_tracer_green_description);
|
||||
};
|
||||
|
||||
class 200Rnd_556x45_Box_F;
|
||||
class ACE_200Rnd_556x45_Box_green : 200Rnd_556x45_Box_F {
|
||||
ammo = "B_556x45_Ball_tracer_green";
|
||||
STRINGS(200Rnd_556x45_Box_green);
|
||||
};
|
||||
class 200Rnd_556x45_Box_tracer_F;
|
||||
class ACE_200Rnd_556x45_Box_tracer_green : 200Rnd_556x45_Box_tracer_F {
|
||||
ammo = "B_556x45_Ball_tracer_green";
|
||||
STRINGS(200Rnd_556x45_Box_tracer_green);
|
||||
descriptionShort = CSTRING(200Rnd_556x45_Box_tracer_green_description);
|
||||
};
|
||||
|
||||
// 5.8mm
|
||||
class 30Rnd_580x42_Mag_F;
|
||||
class ACE_30Rnd_580x42_Mag_red : 30Rnd_580x42_Mag_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_red";
|
||||
STRINGS(30Rnd_580x42_Mag_red);
|
||||
};
|
||||
class ACE_30Rnd_580x42_Mag_yellow : 30Rnd_580x42_Mag_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_yellow";
|
||||
STRINGS(30Rnd_580x42_Mag_yellow);
|
||||
};
|
||||
|
||||
class 30Rnd_580x42_Mag_tracer_F;
|
||||
class ACE_30Rnd_580x42_Mag_tracer_red : 30Rnd_580x42_Mag_tracer_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_red";
|
||||
STRINGS(30Rnd_580x42_Mag_tracer_red);
|
||||
descriptionShort = CSTRING(30Rnd_580x42_Mag_tracer_red_description);
|
||||
};
|
||||
class ACE_30Rnd_580x42_Mag_tracer_yellow : 30Rnd_580x42_Mag_tracer_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_yellow";
|
||||
STRINGS(30Rnd_580x42_Mag_tracer_yellow);
|
||||
descriptionShort = CSTRING(30Rnd_580x42_Mag_tracer_yellow_description);
|
||||
};
|
||||
|
||||
class 100Rnd_580x42_Mag_F;
|
||||
class ACE_100Rnd_580x42_Drum_red : 100Rnd_580x42_Mag_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_red";
|
||||
STRINGS(100Rnd_580x42_Drum_red);
|
||||
};
|
||||
class ACE_100Rnd_580x42_Drum_yellow : 100Rnd_580x42_Mag_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_yellow";
|
||||
STRINGS(100Rnd_580x42_Drum_yellow);
|
||||
};
|
||||
|
||||
class 100Rnd_580x42_Mag_tracer_F;
|
||||
class ACE_100Rnd_580x42_Drum_tracer_red : 100Rnd_580x42_Mag_tracer_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_red";
|
||||
STRINGS(100Rnd_580x42_Drum_tracer_red);
|
||||
descriptionShort = CSTRING(100Rnd_580x42_Drum_tracer_red_description);
|
||||
};
|
||||
class ACE_100Rnd_580x42_Drum_tracer_yellow : 100Rnd_580x42_Mag_tracer_F {
|
||||
ammo = "ACE_580x42_Ball_tracer_yellow";
|
||||
STRINGS(100Rnd_580x42_Drum_tracer_yellow);
|
||||
descriptionShort = CSTRING(100Rnd_580x42_Drum_tracer_yellow_description);
|
||||
};
|
||||
|
||||
// 6.5mm Caseless MX
|
||||
class 30Rnd_65x39_caseless_mag;
|
||||
class ACE_30Rnd_65x39_mx_green : 30Rnd_65x39_caseless_mag {
|
||||
ammo = "B_65x39_Caseless_green";
|
||||
STRINGS(30Rnd_65x39_mx_green);
|
||||
descriptionShort = CSTRING(30Rnd_65x39_mx_green_description);
|
||||
};
|
||||
class ACE_30Rnd_65x39_mx_yellow : 30Rnd_65x39_caseless_mag {
|
||||
ammo = "B_65x39_Caseless_yellow";
|
||||
STRINGS(30Rnd_65x39_mx_yellow);
|
||||
descriptionShort = CSTRING(30Rnd_65x39_mx_yellow_description);
|
||||
};
|
||||
|
||||
class 30Rnd_65x39_caseless_mag_tracer;
|
||||
class ACE_30Rnd_65x39_mx_tracer_green : 30Rnd_65x39_caseless_mag_tracer {
|
||||
ammo = "B_65x39_Caseless_green";
|
||||
picture = "a3\weapons_f\Data\UI\m_30stanag_caseless_green_CA.paa";
|
||||
STRINGS(30Rnd_65x39_mx_tracer_green);
|
||||
descriptionShort = CSTRING(30Rnd_65x39_mx_tracer_green_description);
|
||||
};
|
||||
class ACE_30Rnd_65x39_mx_tracer_yellow : 30Rnd_65x39_caseless_mag_tracer {
|
||||
ammo = "B_65x39_Caseless_yellow";
|
||||
picture = "a3\weapons_f\Data\UI\m_30stanag_caseless_yellow_CA.paa";
|
||||
STRINGS(30Rnd_65x39_mx_tracer_yellow);
|
||||
descriptionShort = CSTRING(30Rnd_65x39_mx_tracer_yellow_description);
|
||||
};
|
||||
|
||||
class 100Rnd_65x39_caseless_mag;
|
||||
class ACE_100Rnd_65x39_mx_green : 100Rnd_65x39_caseless_mag {
|
||||
ammo = "B_65x39_Caseless_green";
|
||||
STRINGS(100Rnd_65x39_mx_green);
|
||||
};
|
||||
class ACE_100Rnd_65x39_mx_yellow : 100Rnd_65x39_caseless_mag {
|
||||
ammo = "B_65x39_Caseless_yellow";
|
||||
STRINGS(100Rnd_65x39_mx_yellow);
|
||||
};
|
||||
|
||||
class 100Rnd_65x39_caseless_mag_tracer;
|
||||
class ACE_100Rnd_65x39_mx_tracer_green : 100Rnd_65x39_caseless_mag_tracer {
|
||||
ammo = "B_65x39_Caseless_green";
|
||||
picture = "a3\weapons_f\Data\UI\M_100Rnd_65x39_green_CA.paa";
|
||||
STRINGS(100Rnd_65x39_mx_tracer_green);
|
||||
descriptionShort = CSTRING(100Rnd_65x39_mx_tracer_green_description);
|
||||
};
|
||||
class ACE_100Rnd_65x39_mx_tracer_yellow : 100Rnd_65x39_caseless_mag_tracer {
|
||||
ammo = "B_65x39_Caseless_yellow";
|
||||
picture = "a3\weapons_f\Data\UI\M_100Rnd_65x39_yellow_CA.paa";
|
||||
STRINGS(100Rnd_65x39_mx_tracer_yellow);
|
||||
descriptionShort = CSTRING(100Rnd_65x39_mx_tracer_yellow_description);
|
||||
};
|
||||
|
||||
// 6.5mm Caseless Katiba
|
||||
class 30Rnd_65x39_caseless_green;
|
||||
class ACE_30Rnd_65x39_katiba_red : 30Rnd_65x39_caseless_green {
|
||||
ammo = "B_65x39_Caseless";
|
||||
STRINGS(30Rnd_65x39_katiba_red);
|
||||
};
|
||||
class ACE_30Rnd_65x39_katiba_yellow : 30Rnd_65x39_caseless_green {
|
||||
ammo = "B_65x39_Caseless_yellow";
|
||||
STRINGS(30Rnd_65x39_katiba_yellow);
|
||||
};
|
||||
|
||||
class 30Rnd_65x39_caseless_green_mag_Tracer;
|
||||
class ACE_30Rnd_65x39_katiba_tracer_red : 30Rnd_65x39_caseless_green_mag_Tracer {
|
||||
ammo = "B_65x39_Caseless";
|
||||
picture = "a3\weapons_f\Data\UI\m_20stanag_red_CA.paa";
|
||||
STRINGS(30Rnd_65x39_katiba_tracer_red);
|
||||
descriptionShort = CSTRING(30Rnd_65x39_katiba_tracer_red_description);
|
||||
};
|
||||
class ACE_30Rnd_65x39_katiba_tracer_yellow : 30Rnd_65x39_caseless_green_mag_Tracer {
|
||||
ammo = "B_65x39_Caseless_yellow";
|
||||
picture = "a3\weapons_f\Data\UI\m_20stanag_yellow_CA.paa";
|
||||
STRINGS(30Rnd_65x39_katiba_tracer_yellow);
|
||||
descriptionShort = CSTRING(30Rnd_65x39_katiba_tracer_yellow_description);
|
||||
};
|
||||
|
||||
// 6.5mm Cased
|
||||
class 200Rnd_65x39_cased_Box;
|
||||
class ACE_200Rnd_65x39_cased_Box_green : 200Rnd_65x39_cased_Box {
|
||||
ammo = "B_65x39_Case_green";
|
||||
STRINGS(200Rnd_65x39_cased_Box_green);
|
||||
descriptionShort = CSTRING(200Rnd_65x39_cased_Box_green_description);
|
||||
};
|
||||
class ACE_200Rnd_65x39_cased_Box_red : 200Rnd_65x39_cased_Box {
|
||||
ammo = "B_65x39_Case";
|
||||
STRINGS(200Rnd_65x39_cased_Box_red);
|
||||
descriptionShort = CSTRING(200Rnd_65x39_cased_Box_red_description);
|
||||
};
|
||||
|
||||
class 200Rnd_65x39_cased_Box_tracer;
|
||||
class ACE_200Rnd_65x39_cased_Box_tracer_green : 200Rnd_65x39_cased_Box_tracer {
|
||||
ammo = "B_65x39_Case_green";
|
||||
picture = "a3\weapons_f\Data\UI\M_200Rnd_65x39_green_CA.paa";
|
||||
STRINGS(200Rnd_65x39_cased_Box_tracer_green);
|
||||
descriptionShort = CSTRING(200Rnd_65x39_cased_Box_tracer_green_description);
|
||||
};
|
||||
class ACE_200Rnd_65x39_cased_Box_tracer_red : 200Rnd_65x39_cased_Box_tracer {
|
||||
ammo = "B_65x39_Case";
|
||||
picture = "a3\weapons_f\Data\UI\M_200Rnd_65x39_red_CA.paa";
|
||||
STRINGS(200Rnd_65x39_cased_Box_tracer_red);
|
||||
descriptionShort = CSTRING(200Rnd_65x39_cased_Box_tracer_red_description);
|
||||
};
|
||||
|
||||
// 7.62x51 (NATO)
|
||||
class ACE_20Rnd_762x51_Mag_tracer;
|
||||
class ACE_20Rnd_762x51_Mag_tracer_green : ACE_20Rnd_762x51_Mag_tracer {
|
||||
ammo = "B_762x51_tracer_green";
|
||||
STRINGS(20Rnd_762x51_Mag_tracer_green);
|
||||
descriptionShort = CSTRING(20Rnd_762x51_Mag_tracer_green_description);
|
||||
};
|
||||
class ACE_20Rnd_762x51_Mag_tracer_yellow : ACE_20Rnd_762x51_Mag_tracer {
|
||||
ammo = "B_762x51_tracer_yellow";
|
||||
STRINGS(20Rnd_762x51_Mag_tracer_yellow);
|
||||
descriptionShort = CSTRING(20Rnd_762x51_Mag_tracer_green_description);
|
||||
};
|
||||
|
||||
// 7.62x54 (Russian)
|
||||
class 150Rnd_762x54_Box;
|
||||
class ACE_150Rnd_762x54_Box_red : 150Rnd_762x54_Box {
|
||||
ammo = "B_762x54_tracer_red";
|
||||
STRINGS(150Rnd_762x54_Box_red);
|
||||
};
|
||||
class ACE_150Rnd_762x54_Box_yellow : 150Rnd_762x54_Box {
|
||||
ammo = "B_762x54_tracer_yellow";
|
||||
STRINGS(150Rnd_762x54_Box_yellow);
|
||||
};
|
||||
|
||||
class 150Rnd_762x54_Box_tracer;
|
||||
class ACE_150Rnd_762x54_Box_tracer_red : 150Rnd_762x54_Box_tracer {
|
||||
ammo = "B_762x54_tracer_red";
|
||||
STRINGS(150Rnd_762x54_Box_tracer_red);
|
||||
descriptionShort = CSTRING(150Rnd_762x54_Box_tracer_red_description);
|
||||
};
|
||||
class ACE_150Rnd_762x54_Box_tracer_yellow : 150Rnd_762x54_Box_tracer {
|
||||
ammo = "B_762x54_tracer_yellow";
|
||||
STRINGS(150Rnd_762x54_Box_tracer_yellow);
|
||||
descriptionShort = CSTRING(150Rnd_762x54_Box_tracer_yellow_description);
|
||||
};
|
||||
|
||||
// 9.3x64
|
||||
class 150Rnd_93x64_Mag;
|
||||
class ACE_150Rnd_93x64_Mag_red : 150Rnd_93x64_Mag {
|
||||
ammo = "ACE_93x64_tracer_red";
|
||||
STRINGS(150Rnd_93x64_Mag_red);
|
||||
};
|
||||
class ACE_150Rnd_93x64_Mag_yellow : 150Rnd_93x64_Mag {
|
||||
ammo = "ACE_93x64_tracer_yellow";
|
||||
STRINGS(150Rnd_93x64_Mag_yellow);
|
||||
};
|
||||
|
||||
// .338 NM
|
||||
class 130Rnd_338_Mag;
|
||||
class ACE_130Rnd_338_Mag_green : 130Rnd_338_Mag {
|
||||
ammo = "ACE_338_NM_tracer_green";
|
||||
STRINGS(130Rnd_338_Mag_green);
|
||||
};
|
||||
class ACE_130Rnd_338_Mag_yellow : 130Rnd_338_Mag {
|
||||
ammo = "ACE_338_NM_tracer_yellow";
|
||||
STRINGS(130Rnd_338_Mag_yellow);
|
||||
};
|
||||
};
|
@ -15,27 +15,5 @@ class CfgPatches {
|
||||
};
|
||||
|
||||
#include "CfgAmmo.hpp"
|
||||
|
||||
// CfgMagazines and CfgWeapons are included for testing only and may be removed for release version.
|
||||
// There is also an ammo class B_556x45_Ball_Tracer_White commented out in CfgAmmo
|
||||
// this should also be uncommented when testing white tracers.
|
||||
/*
|
||||
class CfgMagazines {
|
||||
class 200Rnd_556x45_Box_Tracer_F;
|
||||
class 200Rnd_556x45_Box_Green_F : 200Rnd_556x45_Box_Tracer_F {
|
||||
ammo = "B_556x45_Ball_Tracer_Green";
|
||||
displayName = "5.56 mm 200Rnd Tracer (Green) Box";
|
||||
};
|
||||
class 200Rnd_556x45_Box_White_F : 200Rnd_556x45_Box_Tracer_F {
|
||||
ammo = "B_556x45_Ball_Tracer_White";
|
||||
displayName = "5.56 mm 200Rnd Tracer (White) Box";
|
||||
};
|
||||
};
|
||||
|
||||
class CfgWeapons {
|
||||
class LMG_03_base_F;
|
||||
class LMG_03_F : LMG_03_base_F {
|
||||
magazines[] = {"200Rnd_556x45_Box_F","200Rnd_556x45_Box_Red_F","200Rnd_556x45_Box_Tracer_F","200Rnd_556x45_Box_Tracer_Red_F","200Rnd_556x45_Box_Green_F","200Rnd_556x45_Box_White_F"};
|
||||
};
|
||||
};
|
||||
*/
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgMagazineWells.hpp"
|
||||
|
259
optionals/tracers/stringtable.xml
Normal file
259
optionals/tracers/stringtable.xml
Normal file
@ -0,0 +1,259 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE_tracer">
|
||||
<Package name="main">
|
||||
<Container name="magazines">
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_556x45_Drum_green">
|
||||
<English>5.56 mm 150Rnd Reload Tracer (Green) Mag</English>
|
||||
<German>150 Schuss 5,56 mm Nachlade-Leuchtspur (Grün) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_556x45_Drum_yellow">
|
||||
<English>5.56 mm 150Rnd Reload Tracer (Yellow) Mag</English>
|
||||
<German>150 Schuss 5,56 mm Nachlade-Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_556x45_Drum_tracer_green">
|
||||
<English>5.56 mm 150Rnd Tracer (Green) Mag</English>
|
||||
<German>150 Schuss 5,56 mm Leuchtspur (Grün) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_556x45_Drum_tracer_green_description">
|
||||
<English>Caliber: 5.56x45 mm Tracer - Green<br />Rounds: 150<br />Used in: SPAR-16S</English>
|
||||
<German>Kaliber: 5,56x45 mm Leuchtspur - grün<br />Schuss: 150<br />Verwendet in: SPAR-16S</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_556x45_Drum_tracer_yellow">
|
||||
<English>5.56 mm 150Rnd Tracer (Yellow) Mag</English>
|
||||
<German>150 Schuss 5,56 mm Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_556x45_Drum_tracer_yellow_description">
|
||||
<English>Caliber: 5.56x45 mm Tracer - Yellow<br />Rounds: 150<br />Used in: SPAR-16S</English>
|
||||
<German>Kaliber: 5,56x45 mm Leuchtspur - gelb<br />Schuss: 150<br />Verwendet in: SPAR-16S</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_556x45_Box_green">
|
||||
<English>5.56 mm 200Rnd Reload Tracer (Green) Box</English>
|
||||
<German>200 Schuss 5,56 mm Nachlade-Leuchtspur (Grün) Kasten</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_556x45_Box_tracer_green">
|
||||
<English>5.56 mm 200Rnd Tracer (Green) Box</English>
|
||||
<German>200 Schuss 5,56 mm Nachlade-Leuchtspur (Grün) Kasten</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_556x45_Box_tracer_green_description">
|
||||
<English>Caliber: 5.56x45 mm Tracer - Green<br />Rounds: 200<br />Used in: LIM-85</English>
|
||||
<German>Kaliber: 5,56x45 mm Leuchtspur - grün<br />Schuss: 200<br />Verwendet in: LIM-85</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_580x42_Mag_red">
|
||||
<English>5.8 mm 30Rnd Reload Tracer (Red) Mag</English>
|
||||
<German>30 Schuss 5,8 mm Nachlade-Leuchtspur (Rot) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_580x42_Mag_yellow">
|
||||
<English>5.8 mm 30Rnd Reload Tracer (Yellow) Mag</English>
|
||||
<German>30 Schuss 5,8 mm Nachlade-Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_580x42_Mag_tracer_red">
|
||||
<English>5.8 mm 30Rnd Tracer (Red) Mag</English>
|
||||
<German>30 Schuss 5,8 mm Leuchtspur (Rot) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_580x42_Mag_tracer_red_description">
|
||||
<English>Caliber: 5.8x42 mm Tracer - Red<br />Rounds: 30<br />Used in: CAR-95, CAR-95 GL</English>
|
||||
<German>Kaliber: 5,8x42 mm Leuchtspur - rot<br />Schuss: 30<br />Verwendet in: CAR-95, CAR-95 GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_580x42_Mag_tracer_yellow">
|
||||
<English>5.8 mm 30Rnd Tracer (Yellow) Mag</English>
|
||||
<German>30 Schuss 5,8 mm Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_580x42_Mag_tracer_yellow_description">
|
||||
<English>Caliber: 5.8x42 mm Tracer - Yellow<br />Rounds: 30<br />Used in: CAR-95, CAR-95 GL</English>
|
||||
<German>Kaliber: 5,8x42 mm Leuchtspur - gelb<br />Schuss: 30<br />Verwendet in: CAR-95, CAR-95 GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_580x42_Drum_red">
|
||||
<English>5.8 mm 100Rnd Reload Tracer (Red) Mag</English>
|
||||
<German>100 Schuss 5,8 mm Nachlade-Leuchtspur (Rot) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_580x42_Drum_yellow">
|
||||
<English>5.8 mm 100Rnd Reload Tracer (Yellow) Mag</English>
|
||||
<German>100 Schuss 5,8 mm Nachlade-Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_580x42_Drum_tracer_red">
|
||||
<English>5.8 mm 100Rnd Tracer (Red) Mag</English>
|
||||
<German>100 Schuss 5,8 mm Leuchtspur (Rot) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_580x42_Drum_tracer_red_description">
|
||||
<English>Caliber: 5.8x42 mm Tracer - Red<br />Rounds: 100<br />Used in: CAR-95-1</English>
|
||||
<German>Kaliber: 5,8x42 mm Leuchtspur - rot<br />Schuss: 100<br />Verwendet in: CAR-95-1</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_580x42_Drum_tracer_yellow">
|
||||
<English>5.8 mm 100Rnd Tracer (Yellow) Mag</English>
|
||||
<German>100 Schuss 5,8 mm Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_580x42_Drum_tracer_yellow_description">
|
||||
<English>Caliber: 5.8x42 mm Tracer - Yellow<br />Rounds: 100<br />Used in: CAR-95-1</English>
|
||||
<German>Kaliber: 5,8x42 mm Leuchtspur - gelb<br />Schuss: 100<br />Verwendet in: CAR-95-1</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_green">
|
||||
<English>6.5mm 30Rnd Reload Tracer (Green) Mag</English>
|
||||
<German>30 Schuss 6.5mm Nachlade-Leuchtspur (Grün) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_green_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||
<German>Kaliber: 6.5x39 mm Nachlade-Leuchtspur - Grün<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_yellow">
|
||||
<English>6.5mm 30Rnd Reload Tracer (Yellow) Mag</English>
|
||||
<German>30 Schuss 6.5mm Nachlade-Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_yellow_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Yellow<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||
<German>Kaliber: 6.5x39 mm Nachlade-Leuchtspur - Gelb<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_tracer_green">
|
||||
<English>6.5mm 30Rnd Tracer (Green) Mag</English>
|
||||
<German>30 Schuss 6.5mm Leuchtspur (Grün) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_tracer_green_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||
<German>Kaliber: 6.5x39 mm Leuchtspur - Grün<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_tracer_yellow">
|
||||
<English>6.5mm 30Rnd Tracer (Yellow) Mag</English>
|
||||
<German>30 Schuss 6.5mm Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_mx_tracer_yellow_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Yellow<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||
<German>Kaliber: 6.5x39 mm Leuchtspur - Gelb<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_65x39_mx_green">
|
||||
<English>6.5mm 100Rnd Mixed Mag (Green)</English>
|
||||
<German>100 Schuss 6.5mm Magazin gemischt (grün)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_65x39_mx_yellow">
|
||||
<English>6.5mm 100Rnd Mixed Mag (Yellow)</English>
|
||||
<German>100 Schuss 6.5mm Magazin gemischt (gelb)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_65x39_mx_tracer_green">
|
||||
<English>6.5mm 100Rnd Mag Tracer (Green)</English>
|
||||
<German>100 Schuss 6.5mm Magazin Leuchtspur (Grün)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_65x39_mx_tracer_green_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 100<br />Used in: MX SW</English>
|
||||
<German>Kaliber: 6.5x39 mm Leuchtspur - Grün<br />Patronen: 100<br />Verwendet in: MX SW</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_65x39_mx_tracer_yellow">
|
||||
<English>6.5mm 100Rnd Mag Tracer (Yellow)</English>
|
||||
<German>100 Schuss 6.5mm Magazin Leuchtspur (Gelb)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_100Rnd_65x39_mx_tracer_yellow_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Yellow<br />Rounds: 100<br />Used in: MX SW</English>
|
||||
<German>Kaliber: 6.5x39 mm Leuchtspur - Gelb<br />Patronen: 100<br />Verwendet in: MX SW</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_katiba_red">
|
||||
<English>6.5mm 30Rnd Reload Tracer (Red) Mag</English>
|
||||
<German>30 Schuss 6.5mm Nachlade-Leuchtspur (Rot) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_katiba_yellow">
|
||||
<English>6.5mm 30Rnd Reload Tracer (Yellow) Mag</English>
|
||||
<German>30 Schuss 6.5mm Nachlade-Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_katiba_tracer_red">
|
||||
<English>6.5mm 30Rnd Tracer (Red) Mag</English>
|
||||
<German>30 Schuss 6.5mm Leuchtspur (Rot) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_katiba_tracer_red_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer (Red) - Caseless<br />Rounds: 30<br />Used in: Katiba, Type 115</English>
|
||||
<German>Kaliber: 6,5x39mm Leuchtspur (Rot) ‒ hülsenlos<br />Patronen: 30<br />Eingesetzt von: Katiba, Typ 115</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_katiba_tracer_yellow">
|
||||
<English>6.5mm 30Rnd Tracer (Yellow) Mag</English>
|
||||
<German>30 Schuss 6.5mm Leuchtspur (Gelb) Magazin</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_30Rnd_65x39_katiba_tracer_yellow_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer (Yellow) - Caseless<br />Rounds: 30<br />Used in: Katiba, Type 115</English>
|
||||
<German>Kaliber: 6,5x39mm Leuchtspur (Rot) ‒ hülsenlos<br />Patronen: 30<br />Eingesetzt von: Katiba, Typ 115</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_green">
|
||||
<English>6.5 mm 200Rnd Belt Case Mixed (Green)</English>
|
||||
<German>6,5 mm 200-Schuss-Gurtkiste Gemischt (grün)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_green_description">
|
||||
<English>Caliber: 6.5x39 mm Mixed - Green<br />Rounds: 200<br />Used in: Mk200</English>
|
||||
<German>Kaliber: 6.5x39 mm Gemischt - Grün<br />Patronen: 200<br />Verwendet in: Mk200</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_red">
|
||||
<English>6.5 mm 200Rnd Belt Case Mixed (Red)</English>
|
||||
<German>6,5 mm 200-Schuss-Gurtkiste Gemischt (grün)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_red_description">
|
||||
<English>Caliber: 6.5x39 mm Mixed - Red<br />Rounds: 200<br />Used in: Mk200</English>
|
||||
<German>Kaliber: 6.5x39 mm Mixed - Rot<br />Patronen: 200<br />Verwendet in: Mk200</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_tracer_green">
|
||||
<English>6.5 mm 200Rnd Belt Case Tracer (Green)</English>
|
||||
<German>6,5 mm 200-Schuss-Gurtkiste Leuchtspur (grün)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_tracer_green_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 200<br />Used in: Mk200</English>
|
||||
<German>Kaliber: 6.5x39 mm Leuchtspur - Grün<br />Patronen: 200<br />Verwendet in: Mk200</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_tracer_red">
|
||||
<English>6.5 mm 200Rnd Belt Case Tracer (Red)</English>
|
||||
<German>6,5 mm 200-Schuss-Gurtkiste Leuchtspur (rot)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_200Rnd_65x39_cased_Box_tracer_red_description">
|
||||
<English>Caliber: 6.5x39 mm Tracer - Red<br />Rounds: 200<br />Used in: Mk200</English>
|
||||
<German>Kaliber: 6.5x39 mm Leuchtspur - Rot<br />Patronen: 200<br />Verwendet in: Mk200</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_20Rnd_762x51_Mag_Tracer_green">
|
||||
<English>7.62 mm 20Rnd Tracer (Green) Mag</English>
|
||||
<German>7,62 mm 20-Schuss-Magazin Leuchtspur (Grün)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_20Rnd_762x51_Mag_Tracer_green_description">
|
||||
<English>Caliber: 7.62x51 mm NATO Tracer - Green<br />Rounds: 20<br />Used in: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17</English>
|
||||
<German>Kaliber: 7,62x51 mm NATO Leuchtspur - grün<br />Patronen: 20<br />Eingesetzt von: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_20Rnd_762x51_Mag_Tracer_yellow">
|
||||
<English>7.62 mm 20Rnd Tracer (Yellow) Mag</English>
|
||||
<German>7,62 mm 20-Schuss-Magazin Leuchtspur (Gelb)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_20Rnd_762x51_Mag_Tracer_yellow_description">
|
||||
<English>Caliber: 7.62x51 mm NATO Tracer - Yellow<br />Rounds: 20<br />Used in: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17</English>
|
||||
<German>Kaliber: 7,62x51 mm NATO Leuchtspur - gelb<br />Patronen: 20<br />Eingesetzt von: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_762x54_Box_red">
|
||||
<English>7.62mm 150Rnd Box Mixed (Red)</English>
|
||||
<German>7.62mm 150 Schuss Kiste Gemischt (rot)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_762x54_Box_yellow">
|
||||
<English>7.62mm 150Rnd Box Mixed (Yellow)</English>
|
||||
<German>7.62mm 150 Schuss Kiste Gemischt (gelb)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_762x54_Box_Tracer_red">
|
||||
<English>7.62mm 150Rnd Box Tracer (Red)</English>
|
||||
<German>7.62mm 150 Schuss Kiste Leuchtspur (rot)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_762x54_Box_Tracer_red_description">
|
||||
<English>Caliber: 7.62x54 mm Tracer - Red<br />Rounds: 150<br />Used in: Zafir</English>
|
||||
<German>Kaliber: 7.62x54 mm Leuchtspur - Rot<br />Patronen: 150<br />Verwendet in: Zafir</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_762x54_Box_Tracer_yellow">
|
||||
<English>7.62mm 150Rnd Box Tracer (Yellow)</English>
|
||||
<German>7.62mm 150 Schuss Kiste Leuchtspur (Rot)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_762x54_Box_Tracer_yellow_description">
|
||||
<English>Caliber: 7.62x54 mm Tracer - Yellow<br />Rounds: 150<br />Used in: Zafir</English>
|
||||
<German>Kaliber: 7.62x54 mm Leuchtspur - Gelb<br />Patronen: 150<br />Verwendet in: Zafir</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_93x64_Mag_yellow">
|
||||
<English>9.3mm 150Rnd Belt Mixed (Yellow)</English>
|
||||
<German>9.3mm 150 Schuss Gurt gemischt (Gelb)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_150Rnd_93x64_Mag_red">
|
||||
<English>9.3mm 150Rnd Belt Mixed (Red)</English>
|
||||
<German>9.3mm 150 Schuss Gurt gemischt (Rot)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_130Rnd_338_Mag_yellow">
|
||||
<English>.338 NM 130Rnd Belt Mixed (Yellow)</English>
|
||||
<German>.338 NM 130 Schuss Gurt gemischt (gelb)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tracers_130Rnd_338_Mag_green">
|
||||
<English>.338 NM 130Rnd Belt Mixed (Green)</English>
|
||||
<German>.338 NM 130 Schuss Gurt gemischt (grün)</German>
|
||||
</Key>
|
||||
</Container>
|
||||
</Package>
|
||||
</Project>
|
Loading…
Reference in New Issue
Block a user