mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge remote-tracking branch 'upstream/master' into patch-3
This commit is contained in:
commit
3bfda9364d
26
.github/ISSUE_TEMPLATE/bug_report.md
vendored
26
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -4,23 +4,37 @@ about: Create a report to help us improve
|
|||||||
title: ''
|
title: ''
|
||||||
labels: kind/bug
|
labels: kind/bug
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
|
||||||
|
|
||||||
|
I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING:
|
||||||
|
1. If I delete this entire template or parts of it and go my own path, the team may close my issue without further explanation or engagement.
|
||||||
|
2. If I list multiple bugs/concerns in this one issue, the team may close my issue without further explanation or engagement.
|
||||||
|
3. If I write an issue that has duplicates, the team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number).
|
||||||
|
4. If I leave the title incomplete when filing the issue, the team may close my issue without further explanation or engagement.
|
||||||
|
5. If I file something completely blank in the body, the team may close my issue without further explanation or engagement.
|
||||||
|
6. If I file an issue without collecting logs (RPT file, etc...), the team may close my issue without further explanation or engagement.
|
||||||
|
|
||||||
|
All good? Then proceed and fill out the items below.
|
||||||
|
-->
|
||||||
|
|
||||||
**Mods (complete and add to the following information):**
|
**Mods (complete and add to the following information):**
|
||||||
- **Arma 3:** `x.xx` [e.g. 1.00 stable, rc, dev]
|
- **Arma 3:** `x.xx` [e.g. 1.00 stable, rc, dev]
|
||||||
- **CBA:** `3.x.x` [e.g. 3.0.0 stable, commit hash]
|
- **CBA:** `3.x.x` [e.g. 3.0.0 stable, commit hash]
|
||||||
- **ACE3:** `3.x.x` [eg. 3.0.0 stable, commit hash]
|
- **ACE3:** `3.x.x` [eg. 3.0.0 stable, commit hash]
|
||||||
_Make sure to reproduce the issue with only CBA and ACE3 on a newly created mission!_
|
<!-- Make sure to reproduce the issue with only CBA and ACE3 on a newly created mission! -->
|
||||||
|
|
||||||
**Description:**
|
**Description:**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
**Steps to reproduce:**
|
**Steps to reproduce:**
|
||||||
- _Follow [https://ace3mod.com/img/wiki/user/issue_flowchart.png](this flowchart)!_
|
_Follow [https://ace3mod.com/img/wiki/user/issue_flowchart.png](this flowchart)!_
|
||||||
- Go to ...
|
|
||||||
- Click ...
|
1. _Go to ..._
|
||||||
- See ...
|
2. _Click ..._
|
||||||
|
3. _See ..._
|
||||||
|
|
||||||
**Expected behavior:**
|
**Expected behavior:**
|
||||||
A clear and concise description of what you expected to happen.
|
A clear and concise description of what you expected to happen.
|
||||||
|
6
.github/workflows/extensions.yml
vendored
6
.github/workflows/extensions.yml
vendored
@ -3,11 +3,7 @@ name: Extensions
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- 'extensions/*'
|
- 'extensions/**'
|
||||||
- 'extensions/*/*'
|
|
||||||
- 'extensions/*/*/*'
|
|
||||||
- 'extensions/*/*/*/*'
|
|
||||||
- 'extensions/*/*/*/*/*'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
Brandon (TCVM) <brandondanyluk366@gmail.com>
|
Brandon (TCVM) <brandondanyluk366@gmail.com>
|
||||||
bux578 <github@jonathandavid.de>
|
bux578 <github@jonathandavid.de>
|
||||||
commy2
|
commy2
|
||||||
|
Dahlgren
|
||||||
esteldunedain <nicolas.d.badano@gmail.com>
|
esteldunedain <nicolas.d.badano@gmail.com>
|
||||||
Felix Wiegand <koffeinflummi@gmail.com>
|
Felix Wiegand <koffeinflummi@gmail.com>
|
||||||
Garth "L-H" de Wet <garthofhearts@gmail.com>
|
Garth "L-H" de Wet <garthofhearts@gmail.com>
|
||||||
@ -46,6 +47,7 @@ Anthariel <Contact@storm-simulation.com>
|
|||||||
Arcanum417 <lubos.len@gmail.com>
|
Arcanum417 <lubos.len@gmail.com>
|
||||||
Anton
|
Anton
|
||||||
Arkhir <wonsz666@gmail.com >
|
Arkhir <wonsz666@gmail.com >
|
||||||
|
ARV187 aka Spark23
|
||||||
Asgar Serran <piechottaf@web.de>
|
Asgar Serran <piechottaf@web.de>
|
||||||
BaerMitUmlaut
|
BaerMitUmlaut
|
||||||
Bamse <bamsis@gmail.com>
|
Bamse <bamsis@gmail.com>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||||
<img src="https://img.shields.io/badge/Version-3.13.4-blue.svg?style=flat-square" alt="ACE3 Version">
|
<img src="https://img.shields.io/badge/Version-3.13.6-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/acemod/ACE3/issues">
|
<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">
|
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||||
|
@ -60,8 +60,8 @@ private _barrelLengthTable = getArray(_ammoConfig >> "ACE_barrelLengths");
|
|||||||
//Handle subsonic ammo that would have a huge muzzle velocity shift (when ballistic configs not explicitly defined)
|
//Handle subsonic ammo that would have a huge muzzle velocity shift (when ballistic configs not explicitly defined)
|
||||||
private _typicalSpeed = getNumber (_ammoConfig >> "typicalSpeed");
|
private _typicalSpeed = getNumber (_ammoConfig >> "typicalSpeed");
|
||||||
if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
||||||
private _inheritedBarrelConfig = (!(_muzzleVelocityTable isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo []};
|
private _inheritedBarrelConfig = (_muzzleVelocityTable isNotEqualTo []) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo []};
|
||||||
private _inheritedTempConfig = (!(_ammoTempMuzzleVelocityShifts isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo []};
|
private _inheritedTempConfig = (_ammoTempMuzzleVelocityShifts isNotEqualTo []) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo []};
|
||||||
TRACE_3("subsonic",_typicalSpeed,_inheritedBarrelConfig,_inheritedTempConfig);
|
TRACE_3("subsonic",_typicalSpeed,_inheritedBarrelConfig,_inheritedTempConfig);
|
||||||
if (_inheritedBarrelConfig || _inheritedTempConfig) then {
|
if (_inheritedBarrelConfig || _inheritedTempConfig) then {
|
||||||
private _parentConfig = inheritsFrom _ammoConfig;
|
private _parentConfig = inheritsFrom _ammoConfig;
|
||||||
@ -73,7 +73,7 @@ if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
|||||||
};
|
};
|
||||||
private _linearMuliplier = _typicalSpeed / _parentSpeed;
|
private _linearMuliplier = _typicalSpeed / _parentSpeed;
|
||||||
if (_inheritedBarrelConfig) then {
|
if (_inheritedBarrelConfig) then {
|
||||||
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo [])) then {
|
if ((configProperties [_parentConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isNotEqualTo []) then {
|
||||||
TRACE_2("Parent Has Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
|
TRACE_2("Parent Has Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
|
||||||
{ _muzzleVelocityTable set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _muzzleVelocityTable;
|
{ _muzzleVelocityTable set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _muzzleVelocityTable;
|
||||||
} else {
|
} else {
|
||||||
@ -82,7 +82,7 @@ if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
if (_inheritedTempConfig) then {
|
if (_inheritedTempConfig) then {
|
||||||
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo [])) then {
|
if ((configProperties [_parentConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isNotEqualTo []) then {
|
||||||
TRACE_2("Parent Has Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
|
TRACE_2("Parent Has Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
|
||||||
{ _ammoTempMuzzleVelocityShifts set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _ammoTempMuzzleVelocityShifts;
|
{ _ammoTempMuzzleVelocityShifts set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _ammoTempMuzzleVelocityShifts;
|
||||||
} else {
|
} else {
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)
|
[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)
|
||||||
},
|
},
|
||||||
true // Needs mission restart
|
true // Needs mission restart
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(enableStaminaBar),
|
QGVAR(enableStaminaBar),
|
||||||
@ -28,7 +28,7 @@
|
|||||||
_staminaBarContainer ctrlCommit 0;
|
_staminaBarContainer ctrlCommit 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(fadeStaminaBar),
|
QGVAR(fadeStaminaBar),
|
||||||
@ -43,7 +43,7 @@
|
|||||||
_staminaBarContainer ctrlCommit 0;
|
_staminaBarContainer ctrlCommit 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(performanceFactor),
|
QGVAR(performanceFactor),
|
||||||
@ -52,7 +52,7 @@
|
|||||||
LSTRING(DisplayName),
|
LSTRING(DisplayName),
|
||||||
[0, 5, 1, 1],
|
[0, 5, 1, 1],
|
||||||
true
|
true
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(recoveryFactor),
|
QGVAR(recoveryFactor),
|
||||||
@ -61,7 +61,7 @@
|
|||||||
LSTRING(DisplayName),
|
LSTRING(DisplayName),
|
||||||
[0, 5, 1, 1],
|
[0, 5, 1, 1],
|
||||||
true
|
true
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(loadFactor),
|
QGVAR(loadFactor),
|
||||||
@ -70,7 +70,7 @@
|
|||||||
LSTRING(DisplayName),
|
LSTRING(DisplayName),
|
||||||
[0, 5, 1, 1],
|
[0, 5, 1, 1],
|
||||||
true
|
true
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(terrainGradientFactor),
|
QGVAR(terrainGradientFactor),
|
||||||
@ -79,7 +79,7 @@
|
|||||||
LSTRING(DisplayName),
|
LSTRING(DisplayName),
|
||||||
[0, 5, 1, 1],
|
[0, 5, 1, 1],
|
||||||
true
|
true
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(swayFactor),
|
QGVAR(swayFactor),
|
||||||
@ -88,4 +88,4 @@
|
|||||||
LSTRING(DisplayName),
|
LSTRING(DisplayName),
|
||||||
[0, 5, 1, 1],
|
[0, 5, 1, 1],
|
||||||
true
|
true
|
||||||
] call CBA_Settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
@ -53,7 +53,7 @@ for "_i" from 0.05 to 1.45 step 0.1 do {
|
|||||||
if (lineIntersects [_prevTrajASL, _newTrajASL]) then { // Checks the "VIEW" LOD
|
if (lineIntersects [_prevTrajASL, _newTrajASL]) then { // Checks the "VIEW" LOD
|
||||||
_cross = 2; // 2: View LOD Block (Red)
|
_cross = 2; // 2: View LOD Block (Red)
|
||||||
} else {
|
} else {
|
||||||
if !((lineIntersectsSurfaces [_prevTrajASL, _newTrajASL, _activeThrowable, ACE_player, true, 1, "GEOM", "FIRE"]) isEqualTo []) then {
|
if ((lineIntersectsSurfaces [_prevTrajASL, _newTrajASL, _activeThrowable, ACE_player, true, 1, "GEOM", "FIRE"]) isNotEqualTo []) then {
|
||||||
_cross = 3; // 3: GEOM/FIRE LOD Block (Yellow) - pass a3 bulding glass, but blocked on some CUP glass
|
_cross = 3; // 3: GEOM/FIRE LOD Block (Yellow) - pass a3 bulding glass, but blocked on some CUP glass
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
_nearThrowables append (ACE_player nearObjects ["ACE_Chemlight_IR_Dummy", PICK_UP_DISTANCE]);
|
_nearThrowables append (ACE_player nearObjects ["ACE_Chemlight_IR_Dummy", PICK_UP_DISTANCE]);
|
||||||
|
|
||||||
{
|
{
|
||||||
if (!(_x in _throwablesHelped) &&
|
if (!(_x in _throwablesHelped) && {!((attachedTo _x) getVariable [QGVAR(disablePickUp), false])} &&
|
||||||
{!(_x isKindOf "SmokeShellArty")} && {!(_x isKindOf "G_40mm_Smoke")} && // All smokes inherit from "GrenadeHand" >> "SmokeShell"
|
{!(_x isKindOf "SmokeShellArty")} && {!(_x isKindOf "G_40mm_Smoke")} && // All smokes inherit from "GrenadeHand" >> "SmokeShell"
|
||||||
{GVAR(enablePickUpAttached) || {!GVAR(enablePickUpAttached) && {isNull (attachedTo _x)}}}
|
{GVAR(enablePickUpAttached) || {!GVAR(enablePickUpAttached) && {isNull (attachedTo _x)}}}
|
||||||
) then {
|
) then {
|
||||||
|
@ -19,7 +19,7 @@ params ["_vehicle"];
|
|||||||
|
|
||||||
if (unitIsUAV _vehicle) exitWith {};
|
if (unitIsUAV _vehicle) exitWith {};
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
|
|
||||||
private _addAction = false;
|
private _addAction = false;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ class GVAR(sorts) {
|
|||||||
scope = 2;
|
scope = 2;
|
||||||
displayName = CSTRING(sortByLoadText);
|
displayName = CSTRING(sortByLoadText);
|
||||||
tabs[] = {{3,4,5}, {}};
|
tabs[] = {{3,4,5}, {}};
|
||||||
statement = QUOTE(getContainerMaxLoad configName _this);
|
statement = QUOTE(getContainerMaxLoad (_this select 1));
|
||||||
};
|
};
|
||||||
|
|
||||||
class ACE_accuracy: sortBase {
|
class ACE_accuracy: sortBase {
|
||||||
|
@ -8,15 +8,15 @@ PREP_RECOMPILE_START;
|
|||||||
PREP_RECOMPILE_END;
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
// Arsenal
|
// Arsenal
|
||||||
[QGVAR(camInverted), "CHECKBOX", localize LSTRING(invertCameraSetting), localize LSTRING(settingCategory), false] call CBA_Settings_fnc_init;
|
[QGVAR(camInverted), "CHECKBOX", localize LSTRING(invertCameraSetting), localize LSTRING(settingCategory), false] call CBA_fnc_addSetting;
|
||||||
[QGVAR(enableModIcons), "CHECKBOX", [LSTRING(modIconsSetting), LSTRING(modIconsTooltip)], localize LSTRING(settingCategory), true] call CBA_Settings_fnc_init;
|
[QGVAR(enableModIcons), "CHECKBOX", [LSTRING(modIconsSetting), LSTRING(modIconsTooltip)], localize LSTRING(settingCategory), true] call CBA_fnc_addSetting;
|
||||||
[QGVAR(fontHeight), "SLIDER", [LSTRING(fontHeightSetting), LSTRING(fontHeightTooltip)], localize LSTRING(settingCategory), [1, 10, 4.5, 1]] call CBA_Settings_fnc_init;
|
[QGVAR(fontHeight), "SLIDER", [LSTRING(fontHeightSetting), LSTRING(fontHeightTooltip)], localize LSTRING(settingCategory), [1, 10, 4.5, 1]] call CBA_fnc_addSetting;
|
||||||
[QGVAR(enableIdentityTabs), "CHECKBOX", localize LSTRING(enableIdentityTabsSettings), localize LSTRING(settingCategory), true, true] call CBA_Settings_fnc_init;
|
[QGVAR(enableIdentityTabs), "CHECKBOX", localize LSTRING(enableIdentityTabsSettings), localize LSTRING(settingCategory), true, true] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
// Arsenal loadouts
|
// Arsenal loadouts
|
||||||
[QGVAR(allowDefaultLoadouts), "CHECKBOX", [LSTRING(allowDefaultLoadoutsSetting), LSTRING(defaultLoadoutsTooltip)], localize LSTRING(settingCategory), true, true] call CBA_Settings_fnc_init;
|
[QGVAR(allowDefaultLoadouts), "CHECKBOX", [LSTRING(allowDefaultLoadoutsSetting), LSTRING(defaultLoadoutsTooltip)], localize LSTRING(settingCategory), true, true] call CBA_fnc_addSetting;
|
||||||
[QGVAR(allowSharedLoadouts), "CHECKBOX", localize LSTRING(allowSharingSetting), localize LSTRING(settingCategory), true, true] call CBA_Settings_fnc_init;
|
[QGVAR(allowSharedLoadouts), "CHECKBOX", localize LSTRING(allowSharingSetting), localize LSTRING(settingCategory), true, true] call CBA_fnc_addSetting;
|
||||||
[QGVAR(EnableRPTLog), "CHECKBOX", [LSTRING(printToRPTSetting), LSTRING(printToRPTTooltip)], localize LSTRING(settingCategory), false, false] call CBA_Settings_fnc_init;
|
[QGVAR(EnableRPTLog), "CHECKBOX", [LSTRING(printToRPTSetting), LSTRING(printToRPTTooltip)], localize LSTRING(settingCategory), false, false] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[QGVAR(statsToggle), {
|
[QGVAR(statsToggle), {
|
||||||
params ["_display", "_showStats"];
|
params ["_display", "_showStats"];
|
||||||
|
@ -165,6 +165,18 @@
|
|||||||
#define IDC_ATTRIBUTE_IMPORT_BUTTON 8109
|
#define IDC_ATTRIBUTE_IMPORT_BUTTON 8109
|
||||||
#define IDC_ATTRIBUTE_ADD_COMPATIBLE 8110
|
#define IDC_ATTRIBUTE_ADD_COMPATIBLE 8110
|
||||||
|
|
||||||
|
// Indexes of virtual items array
|
||||||
|
#define IDX_VIRT_WEAPONS 0
|
||||||
|
#define IDX_VIRT_ATTACHEMENTS 1
|
||||||
|
|
||||||
|
#define IDX_VIRT_ITEMS_ALL 2
|
||||||
|
|
||||||
|
#define IDX_VIRT_HEADGEAR 3
|
||||||
|
#define IDX_VIRT_UNIFORM 4
|
||||||
|
#define IDX_VIRT_VEST 5
|
||||||
|
#define IDX_VIRT_BACKPACK 6
|
||||||
|
#define IDX_VIRT_GOGGLES 7
|
||||||
|
|
||||||
#define SYMBOL_ITEM_NONE "−"
|
#define SYMBOL_ITEM_NONE "−"
|
||||||
#define SYMBOL_ITEM_REMOVE "×"
|
#define SYMBOL_ITEM_REMOVE "×"
|
||||||
#define SYMBOL_ITEM_VIRTUAL "∞"
|
#define SYMBOL_ITEM_VIRTUAL "∞"
|
||||||
|
@ -32,9 +32,9 @@ if (_cachedItemInfo isEqualTo []) then {//Not in cache. So get info and put into
|
|||||||
//get name of DLC
|
//get name of DLC
|
||||||
private _dlcName = "";
|
private _dlcName = "";
|
||||||
private _addons = configsourceaddonlist _configPath;
|
private _addons = configsourceaddonlist _configPath;
|
||||||
if !(_addons isEqualTo []) then {
|
if (_addons isNotEqualTo []) then {
|
||||||
private _mods = configsourcemodlist (configfile >> "CfgPatches" >> _addons select 0);
|
private _mods = configsourcemodlist (configfile >> "CfgPatches" >> _addons select 0);
|
||||||
if !(_mods isEqualTo []) then {
|
if (_mods isNotEqualTo []) then {
|
||||||
_dlcName = _mods select 0;
|
_dlcName = _mods select 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -61,11 +61,11 @@ private _fnc_addToTabs = {
|
|||||||
|
|
||||||
_finalArray = ["", _displayName, _statement, _condition];
|
_finalArray = ["", _displayName, _statement, _condition];
|
||||||
|
|
||||||
if !(_leftTabs isEqualTo []) then {
|
if (_leftTabs isNotEqualTo []) then {
|
||||||
[GVAR(sortListLeftPanel), _leftTabs, "L", 0] call _fnc_addToTabs;
|
[GVAR(sortListLeftPanel), _leftTabs, "L", 0] call _fnc_addToTabs;
|
||||||
};
|
};
|
||||||
|
|
||||||
if !(_rightTabs isEqualTo []) then {
|
if (_rightTabs isNotEqualTo []) then {
|
||||||
[GVAR(sortListRightPanel), _rightTabs, "R", 1] call _fnc_addToTabs;
|
[GVAR(sortListRightPanel), _rightTabs, "R", 1] call _fnc_addToTabs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ switch (GVAR(currentLoadoutsTab)) do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GVAR(shiftState) && {is3DEN} && {!(_loadoutName isEqualTo "")} && {_cursSelRow != -1} && {!(_loadoutIndex isEqualto -1)}) exitwith {
|
if (GVAR(shiftState) && {is3DEN} && {_loadoutName isNotEqualTo ""} && {_cursSelRow != -1} && {_loadoutIndex isNotEqualTo -1}) exitwith {
|
||||||
private _defaultLoadoutsSearch = GVAR(defaultLoadoutsList) findIf {(_x select 0) == _loadoutName};
|
private _defaultLoadoutsSearch = GVAR(defaultLoadoutsList) findIf {(_x select 0) == _loadoutName};
|
||||||
if (_defaultLoadoutsSearch isEqualto -1) then {
|
if (_defaultLoadoutsSearch isEqualto -1) then {
|
||||||
GVAR(defaultLoadoutsList) pushBack [_loadoutName, _curSelLoadout];
|
GVAR(defaultLoadoutsList) pushBack [_loadoutName, _curSelLoadout];
|
||||||
|
@ -77,11 +77,11 @@ private _configEntries = "(getNumber (_x >> 'scope')) == 2" configClasses (confi
|
|||||||
|
|
||||||
_finalArray = ["", _displayName, _statement, _condition];
|
_finalArray = ["", _displayName, _statement, _condition];
|
||||||
|
|
||||||
if !(_leftTabsList isEqualTo []) then {
|
if (_leftTabsList isNotEqualTo []) then {
|
||||||
[_sortListLeftPanel, _leftTabsList, "L"] call _fnc_addToTabs;
|
[_sortListLeftPanel, _leftTabsList, "L"] call _fnc_addToTabs;
|
||||||
};
|
};
|
||||||
|
|
||||||
if !(_rightTabsList isEqualTo []) then {
|
if (_rightTabsList isNotEqualTo []) then {
|
||||||
[_sortListRightPanel, _rightTabsList, "R"] call _fnc_addToTabs;
|
[_sortListRightPanel, _rightTabsList, "R"] call _fnc_addToTabs;
|
||||||
};
|
};
|
||||||
} foreach _configEntries;
|
} foreach _configEntries;
|
||||||
|
@ -51,7 +51,7 @@ switch true do {
|
|||||||
|
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach ((GVAR(virtualItems) select 0) select ([IDC_buttonPrimaryWeapon, IDC_buttonSecondaryWeapon, IDC_buttonHandgun] find _ctrlIDC));
|
} foreach ((GVAR(virtualItems) select IDX_VIRT_WEAPONS) select ([IDC_buttonPrimaryWeapon, IDC_buttonSecondaryWeapon, IDC_buttonHandgun] find _ctrlIDC));
|
||||||
};
|
};
|
||||||
|
|
||||||
case (_ctrlIDC in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack]) : {
|
case (_ctrlIDC in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack]) : {
|
||||||
@ -65,19 +65,19 @@ switch true do {
|
|||||||
case IDC_buttonUniform : {
|
case IDC_buttonUniform : {
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach (GVAR(virtualItems) select 4);
|
} foreach (GVAR(virtualItems) select IDX_VIRT_UNIFORM);
|
||||||
};
|
};
|
||||||
|
|
||||||
case IDC_buttonVest : {
|
case IDC_buttonVest : {
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach (GVAR(virtualItems) select 5);
|
} foreach (GVAR(virtualItems) select IDX_VIRT_VEST);
|
||||||
};
|
};
|
||||||
|
|
||||||
case IDC_buttonBackpack : {
|
case IDC_buttonBackpack : {
|
||||||
{
|
{
|
||||||
["CfgVehicles", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgVehicles", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach (GVAR(virtualItems) select 6);
|
} foreach (GVAR(virtualItems) select IDX_VIRT_BACKPACK);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -96,12 +96,12 @@ switch true do {
|
|||||||
case IDC_buttonHeadgear: {
|
case IDC_buttonHeadgear: {
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgWeapons", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach (GVAR(virtualItems) select 3);
|
} foreach (GVAR(virtualItems) select IDX_VIRT_HEADGEAR);
|
||||||
};
|
};
|
||||||
case IDC_buttonGoggles : {
|
case IDC_buttonGoggles : {
|
||||||
{
|
{
|
||||||
["CfgGlasses", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgGlasses", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach (GVAR(virtualItems) select 7);
|
} foreach (GVAR(virtualItems) select IDX_VIRT_GOGGLES);
|
||||||
};
|
};
|
||||||
case IDC_buttonNVG : {
|
case IDC_buttonNVG : {
|
||||||
{
|
{
|
||||||
@ -153,8 +153,8 @@ switch true do {
|
|||||||
_ctrlPanel lbSetTooltip [_lbAdd,format ["%1\n%2",_displayName, _configName]];
|
_ctrlPanel lbSetTooltip [_lbAdd,format ["%1\n%2",_displayName, _configName]];
|
||||||
_x call ADDMODICON;
|
_x call ADDMODICON;
|
||||||
};
|
};
|
||||||
} foreach ("isClass _x" configClasses _x);
|
} foreach ("true" configClasses _x);
|
||||||
} foreach ("isClass _x" configClasses (configfile >> "cfgfaces"));
|
} foreach ("true" configClasses (configfile >> "cfgfaces"));
|
||||||
};
|
};
|
||||||
case IDC_buttonVoice : {
|
case IDC_buttonVoice : {
|
||||||
private _voices = (configProperties [(configFile >> "CfgVoice"), "isClass _x && {getNumber (_x >> 'scope') == 2}", true]) - [(configfile >> "CfgVoice" >> "NoVoice")];
|
private _voices = (configProperties [(configFile >> "CfgVoice"), "isClass _x && {getNumber (_x >> 'scope') == 2}", true]) - [(configfile >> "CfgVoice" >> "NoVoice")];
|
||||||
@ -199,7 +199,7 @@ private _itemsToCheck = ((GVAR(currentItems) select [0,15]) + [GVAR(currentFace)
|
|||||||
for "_lbIndex" from 0 to (lbSize _ctrlPanel - 1) do {
|
for "_lbIndex" from 0 to (lbSize _ctrlPanel - 1) do {
|
||||||
private _currentData = _ctrlPanel lbData _lbIndex;
|
private _currentData = _ctrlPanel lbData _lbIndex;
|
||||||
|
|
||||||
if (!(_currentData isEqualTo "") && {tolower _currentData in _itemsToCheck}) exitWith {
|
if ((_currentData isNotEqualTo "") && {tolower _currentData in _itemsToCheck}) exitWith {
|
||||||
_ctrlPanel lbSetCurSel _lbIndex;
|
_ctrlPanel lbSetCurSel _lbIndex;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -224,7 +224,7 @@ switch (_ctrlIDC) do {
|
|||||||
if (_leftPanelState) then {
|
if (_leftPanelState) then {
|
||||||
{
|
{
|
||||||
["CfgMagazines", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgMagazines", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach ((GVAR(virtualItems) select 2) arrayIntersect _compatibleMagsPrimaryMuzzle);
|
} foreach ((GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL) arrayIntersect _compatibleMagsPrimaryMuzzle);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -232,14 +232,14 @@ switch (_ctrlIDC) do {
|
|||||||
if (_leftPanelState) then {
|
if (_leftPanelState) then {
|
||||||
{
|
{
|
||||||
["CfgMagazines", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
["CfgMagazines", _x, _ctrlPanel] call FUNC(addListBoxItem);
|
||||||
} foreach ((GVAR(virtualItems) select 2) arrayIntersect _compatibleMagsSecondaryMuzzle);
|
} foreach ((GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL) arrayIntersect _compatibleMagsSecondaryMuzzle);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
case IDC_buttonMag : {
|
case IDC_buttonMag : {
|
||||||
{
|
{
|
||||||
["CfgMagazines", _x, true] call _fnc_fill_right_Container;
|
["CfgMagazines", _x, true] call _fnc_fill_right_Container;
|
||||||
} foreach ((GVAR(virtualItems) select 2) arrayIntersect _allCompatibleMags);
|
} foreach ((GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL) arrayIntersect _allCompatibleMags);
|
||||||
{
|
{
|
||||||
["CfgMagazines", _x, true, true] call _fnc_fill_right_Container;
|
["CfgMagazines", _x, true, true] call _fnc_fill_right_Container;
|
||||||
} foreach ((GVAR(virtualItems) select 19) arrayIntersect _allCompatibleMags);
|
} foreach ((GVAR(virtualItems) select 19) arrayIntersect _allCompatibleMags);
|
||||||
@ -248,7 +248,7 @@ switch (_ctrlIDC) do {
|
|||||||
case IDC_buttonMagALL : {
|
case IDC_buttonMagALL : {
|
||||||
{
|
{
|
||||||
["CfgMagazines", _x, true] call _fnc_fill_right_Container;
|
["CfgMagazines", _x, true] call _fnc_fill_right_Container;
|
||||||
} foreach (GVAR(virtualItems) select 2);
|
} foreach (GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL);
|
||||||
{
|
{
|
||||||
["CfgMagazines", _x, true, true] call _fnc_fill_right_Container;
|
["CfgMagazines", _x, true, true] call _fnc_fill_right_Container;
|
||||||
} foreach (GVAR(virtualItems) select 19);
|
} foreach (GVAR(virtualItems) select 19);
|
||||||
@ -282,32 +282,42 @@ switch (_ctrlIDC) do {
|
|||||||
};
|
};
|
||||||
} forEach GVAR(customRightPanelButtons);
|
} forEach GVAR(customRightPanelButtons);
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, false] call _fnc_fill_right_Container;
|
["CfgWeapons", _x, false] call _fnc_fill_right_Container;
|
||||||
} forEach ((GVAR(virtualItems) select 17) select {!((toLower _x) in _blockItems)});
|
} forEach ((GVAR(virtualItems) select 17) select {!((toLower _x) in _blockItems)});
|
||||||
|
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, false, true] call _fnc_fill_right_Container;
|
["CfgWeapons", _x, false, true] call _fnc_fill_right_Container;
|
||||||
} foreach (GVAR(virtualItems) select 18);
|
} foreach ((GVAR(virtualItems) select 18) select {!((toLower _x) in _blockItems)});
|
||||||
{
|
{
|
||||||
["CfgVehicles", _x, false, true] call _fnc_fill_right_Container;
|
["CfgVehicles", _x, false, true] call _fnc_fill_right_Container;
|
||||||
} foreach (GVAR(virtualItems) select 23);
|
} foreach ((GVAR(virtualItems) select 23) select {!((toLower _x) in _blockItems)});
|
||||||
{
|
{
|
||||||
["CfgGlasses", _x, false, true] call _fnc_fill_right_Container;
|
["CfgGlasses", _x, false, true] call _fnc_fill_right_Container;
|
||||||
} foreach (GVAR(virtualItems) select 24);
|
} foreach ((GVAR(virtualItems) select 24) select {!((toLower _x) in _blockItems)});
|
||||||
};
|
};
|
||||||
|
|
||||||
default {
|
default {
|
||||||
private _index = [RIGHT_PANEL_CUSTOM_BUTTONS] find _ctrlIDC;
|
private _index = [RIGHT_PANEL_CUSTOM_BUTTONS] find _ctrlIDC;
|
||||||
if (_index != -1) then {
|
if (_index != -1) then {
|
||||||
private _data = GVAR(customRightPanelButtons) param [_index];
|
private _data = GVAR(customRightPanelButtons) param [_index];
|
||||||
|
|
||||||
if (!isNil "_data") then {
|
if (!isNil "_data") then {
|
||||||
private _items = _data select 0;
|
private _items = _data select 0;
|
||||||
{
|
{
|
||||||
["CfgWeapons", _x, true] call _fnc_fill_right_Container;
|
["CfgWeapons", _x, true] call _fnc_fill_right_Container;
|
||||||
} foreach ((GVAR(virtualItems) select 17) select {(toLower _x) in _items});
|
} foreach ((GVAR(virtualItems) select 17) select {(toLower _x) in _items});
|
||||||
|
|
||||||
|
{
|
||||||
|
["CfgWeapons", _x, false, true] call _fnc_fill_right_Container;
|
||||||
|
} foreach ((GVAR(virtualItems) select 18) select {(toLower _x) in _items});
|
||||||
|
{
|
||||||
|
["CfgVehicles", _x, false, true] call _fnc_fill_right_Container;
|
||||||
|
} foreach ((GVAR(virtualItems) select 23) select {(toLower _x) in _items});
|
||||||
|
{
|
||||||
|
["CfgGlasses", _x, false, true] call _fnc_fill_right_Container;
|
||||||
|
} foreach ((GVAR(virtualItems) select 24) select {(toLower _x) in _items});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -356,7 +366,7 @@ private _sortRightCtrl = _display displayCtrl IDC_sortRightTab;
|
|||||||
[_sortRightCtrl] call FUNC(sortPanel);
|
[_sortRightCtrl] call FUNC(sortPanel);
|
||||||
|
|
||||||
// Select current data if not in a container
|
// Select current data if not in a container
|
||||||
if !(_itemsToCheck isEqualTo []) then {
|
if (_itemsToCheck isNotEqualTo []) then {
|
||||||
for "_lbIndex" from 0 to (lbSize _ctrlPanel - 1) do {
|
for "_lbIndex" from 0 to (lbSize _ctrlPanel - 1) do {
|
||||||
private _currentData = _ctrlPanel lbData _lbIndex;
|
private _currentData = _ctrlPanel lbData _lbIndex;
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ if (!isNil "_itemCfg") then {
|
|||||||
|
|
||||||
// Handle titles, bars and text
|
// Handle titles, bars and text
|
||||||
_statsList = _statsList select [0, 5];
|
_statsList = _statsList select [0, 5];
|
||||||
if !(_statsList isEqualTo []) then {
|
if (_statsList isNotEqualTo []) then {
|
||||||
{
|
{
|
||||||
_x params ["_ID", "_configEntry", "_title", "_bools", "_statements"];
|
_x params ["_ID", "_configEntry", "_title", "_bools", "_statements"];
|
||||||
_bools params ["_showBar", "_showText"];
|
_bools params ["_showBar", "_showText"];
|
||||||
|
@ -59,7 +59,6 @@ if (is3DEN) then {
|
|||||||
curatorcamera cameraEffect ["internal","back"];
|
curatorcamera cameraEffect ["internal","back"];
|
||||||
} else {
|
} else {
|
||||||
GVAR(camera) cameraEffect ["terminate","back"];
|
GVAR(camera) cameraEffect ["terminate","back"];
|
||||||
ACE_player switchCamera GVAR(cameraView);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -71,6 +70,8 @@ if (!isNil QGVAR(moduleUsed)) then {
|
|||||||
objNull remoteControl GVAR(center);
|
objNull remoteControl GVAR(center);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ACE_player switchCamera GVAR(cameraView);
|
||||||
|
|
||||||
if (isMultiplayer) then {
|
if (isMultiplayer) then {
|
||||||
|
|
||||||
[QGVAR(broadcastFace), [GVAR(center), GVAR(currentFace)], QGVAR(center) + "_face"] call CBA_fnc_globalEventJIP;
|
[QGVAR(broadcastFace), [GVAR(center), GVAR(currentFace)], QGVAR(center) + "_face"] call CBA_fnc_globalEventJIP;
|
||||||
|
@ -64,24 +64,24 @@ GVAR(statsInfo) = [true, 0, controlNull, nil, nil];
|
|||||||
for "_index" from 0 to 10 do {
|
for "_index" from 0 to 10 do {
|
||||||
switch (_index) do {
|
switch (_index) do {
|
||||||
// primary, secondary, handgun weapons
|
// primary, secondary, handgun weapons
|
||||||
case 0: {
|
case IDX_VIRT_WEAPONS: {
|
||||||
private _array = LIST_DEFAULTS select _index;
|
private _array = LIST_DEFAULTS select _index;
|
||||||
|
|
||||||
if !((_array select 0) isEqualTo "") then {
|
if ((_array select 0) isNotEqualTo "") then {
|
||||||
((GVAR(virtualItems) select _index) select 0) pushBackUnique (_array select 0);
|
((GVAR(virtualItems) select _index) select 0) pushBackUnique (_array select 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
if !((_array select 1) isEqualTo "") then {
|
if ((_array select 1) isNotEqualTo "") then {
|
||||||
((GVAR(virtualItems) select _index) select 1) pushBackUnique (_array select 1);
|
((GVAR(virtualItems) select _index) select 1) pushBackUnique (_array select 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
if !((_array select 2) isEqualTo "") then {
|
if ((_array select 2) isNotEqualTo "") then {
|
||||||
((GVAR(virtualItems) select _index) select 2) pushBackUnique (_array select 2);
|
((GVAR(virtualItems) select _index) select 2) pushBackUnique (_array select 2);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// Accs for the weapons above
|
// Accs for the weapons above
|
||||||
case 1: {
|
case IDX_VIRT_ATTACHEMENTS: {
|
||||||
private _array = LIST_DEFAULTS select _index;
|
private _array = LIST_DEFAULTS select _index;
|
||||||
_array params ["_accsArray", "_magsArray"];
|
_array params ["_accsArray", "_magsArray"];
|
||||||
|
|
||||||
@ -96,28 +96,28 @@ for "_index" from 0 to 10 do {
|
|||||||
} forEach _accsArray;
|
} forEach _accsArray;
|
||||||
|
|
||||||
{
|
{
|
||||||
if !(_x isEqualTo []) then {
|
if (_x isNotEqualTo []) then {
|
||||||
|
|
||||||
if (_x select 0 != "") then {
|
if (_x select 0 != "") then {
|
||||||
(GVAR(virtualItems) select 2) pushBackUnique (_x select 0);
|
(GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL) pushBackUnique (_x select 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (count _x > 1 && {_x select 1 != ""}) then {
|
if (count _x > 1 && {_x select 1 != ""}) then {
|
||||||
(GVAR(virtualItems) select 2) pushBackUnique (_x select 1);
|
(GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL) pushBackUnique (_x select 1);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} forEach _magsArray;
|
} forEach _magsArray;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Inventory items
|
// Inventory items
|
||||||
case 2: {
|
case IDX_VIRT_ITEMS_ALL: {
|
||||||
call FUNC(updateUniqueItemsList);
|
call FUNC(updateUniqueItemsList);
|
||||||
};
|
};
|
||||||
|
|
||||||
// The rest
|
// The rest
|
||||||
default {
|
default {
|
||||||
private _array = (LIST_DEFAULTS select _index) select {!(_x isEqualTo "")};
|
private _array = (LIST_DEFAULTS select _index) select {_x isNotEqualTo ""};
|
||||||
if !(_array isEqualTo []) then {
|
if (_array isNotEqualTo []) then {
|
||||||
{(GVAR(virtualItems) select _index) pushBackUnique _x} forEach _array;
|
{(GVAR(virtualItems) select _index) pushBackUnique _x} forEach _array;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -25,7 +25,7 @@ GVAR(shiftState) = _shiftState;
|
|||||||
private _return = true;
|
private _return = true;
|
||||||
private _loadoutsDisplay = findDisplay IDD_loadouts_display;
|
private _loadoutsDisplay = findDisplay IDD_loadouts_display;
|
||||||
|
|
||||||
if !(_loadoutsDisplay isEqualTo displayNull) then {
|
if (_loadoutsDisplay isNotEqualTo displayNull) then {
|
||||||
if !(GVAR(loadoutsSearchbarFocus)) then {
|
if !(GVAR(loadoutsSearchbarFocus)) then {
|
||||||
switch true do {
|
switch true do {
|
||||||
// Close button
|
// Close button
|
||||||
@ -171,7 +171,7 @@ if !(_loadoutsDisplay isEqualTo displayNull) then {
|
|||||||
case (_keyPressed == DIK_RETURN): {
|
case (_keyPressed == DIK_RETURN): {
|
||||||
if (GVAR(leftSearchbarFocus)) then {
|
if (GVAR(leftSearchbarFocus)) then {
|
||||||
[_display, _display displayCtrl IDC_leftSearchbar] call FUNC(handleSearchBar);
|
[_display, _display displayCtrl IDC_leftSearchbar] call FUNC(handleSearchBar);
|
||||||
};
|
};
|
||||||
if (GVAR(rightSearchbarFocus)) then {
|
if (GVAR(rightSearchbarFocus)) then {
|
||||||
[_display, _display displayCtrl IDC_rightSearchbar] call FUNC(handleSearchBar);
|
[_display, _display displayCtrl IDC_rightSearchbar] call FUNC(handleSearchBar);
|
||||||
};
|
};
|
||||||
|
@ -60,7 +60,7 @@ switch (GVAR(currentLeftPanel)) do {
|
|||||||
private _cfgMags = configFile >> "CfgMagazines";
|
private _cfgMags = configFile >> "CfgMagazines";
|
||||||
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
|
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
|
||||||
GVAR(center) addWeapon _item;
|
GVAR(center) addWeapon _item;
|
||||||
if !(_compatibleMags isEqualTo []) then {
|
if (_compatibleMags isNotEqualTo []) then {
|
||||||
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
|
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ switch (GVAR(currentLeftPanel)) do {
|
|||||||
private _cfgMags = configFile >> "CfgMagazines";
|
private _cfgMags = configFile >> "CfgMagazines";
|
||||||
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
|
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
|
||||||
GVAR(center) addWeapon _item;
|
GVAR(center) addWeapon _item;
|
||||||
if !(_compatibleMags isEqualTo []) then {
|
if (_compatibleMags isNotEqualTo []) then {
|
||||||
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
|
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ switch (GVAR(currentLeftPanel)) do {
|
|||||||
private _cfgMags = configFile >> "CfgMagazines";
|
private _cfgMags = configFile >> "CfgMagazines";
|
||||||
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
|
private _compatibleMags = ([_item, true] call CBA_fnc_compatibleMagazines) select { getNumber (_cfgMags >> _x >> "scope") == 2 };
|
||||||
GVAR(center) addWeapon _item;
|
GVAR(center) addWeapon _item;
|
||||||
if !(_compatibleMags isEqualTo []) then {
|
if (_compatibleMags isNotEqualTo []) then {
|
||||||
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
|
GVAR(center) addWeaponItem [_item, [_compatibleMags select 0]];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,9 +68,9 @@ if (_items isEqualType true) then {
|
|||||||
|
|
||||||
private _itemCount = {
|
private _itemCount = {
|
||||||
if (_x isEqualTo (_cargo select 0) || {_x isEqualTo (_cargo select 1)}) then {
|
if (_x isEqualTo (_cargo select 0) || {_x isEqualTo (_cargo select 1)}) then {
|
||||||
!(_x isEqualTo [[],[],[]] || {_x isEqualTo [[],[],[],[]]})
|
(_x isNotEqualTo [[],[],[]] || {_x isEqualTo [[],[],[],[]]})
|
||||||
} else {
|
} else {
|
||||||
!(_x isEqualTo [])
|
(_x isNotEqualTo [])
|
||||||
};
|
};
|
||||||
} count _cargo;
|
} count _cargo;
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ _for do {
|
|||||||
if (_right) then {
|
if (_right) then {
|
||||||
_panel lnbSetText [[_i, 1], format ["%1%2", _value, _panel lnbText [_i, 1]]];
|
_panel lnbSetText [[_i, 1], format ["%1%2", _value, _panel lnbText [_i, 1]]];
|
||||||
} else {
|
} else {
|
||||||
if !(_item isEqualTo "") then {
|
if (_item isNotEqualTo "") then {
|
||||||
_panel lbSetText [_i, format ["%1%2", _value, _panel lbText _i]];
|
_panel lbSetText [_i, format ["%1%2", _value, _panel lbText _i]];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -159,7 +159,7 @@ if (_right) then {
|
|||||||
if (_data == _selected) then {_panel lbSetCurSel _i};
|
if (_data == _selected) then {_panel lbSetCurSel _i};
|
||||||
};
|
};
|
||||||
private _name = getText (_cfgClass >> _data >> "displayName");
|
private _name = getText (_cfgClass >> _data >> "displayName");
|
||||||
if !(_name isEqualTo "") then {
|
if (_name isNotEqualTo "") then {
|
||||||
_panel lbSetText [_i, _name];
|
_panel lbSetText [_i, _name];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -16,9 +16,9 @@ params ["_config"];
|
|||||||
|
|
||||||
private _dlc = "";
|
private _dlc = "";
|
||||||
private _addons = configSourceAddonList _config;
|
private _addons = configSourceAddonList _config;
|
||||||
if !(_addons isEqualTo []) then {
|
if (_addons isNotEqualTo []) then {
|
||||||
private _mods = configSourceModList (configfile >> "CfgPatches" >> _addons select 0);
|
private _mods = configSourceModList (configfile >> "CfgPatches" >> _addons select 0);
|
||||||
if !(_mods isEqualTo []) then {
|
if (_mods isNotEqualTo []) then {
|
||||||
_dlc = _mods select 0;
|
_dlc = _mods select 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_itemCfg", "_ballisticCo", "_explosiveCo"];
|
params ["_itemInfo", "_ballisticCo", "_explosiveCo"];
|
||||||
|
_itemInfo params ["_itemCfg"];
|
||||||
|
|
||||||
(([[_itemCfg], ["passthrough", "armor"]] call BIS_fnc_configExtremes) select 1) params [["_passthroughMax", 0], ["_armorMax", 0]];
|
(([[_itemCfg], ["passthrough", "armor"]] call BIS_fnc_configExtremes) select 1) params [["_passthroughMax", 0], ["_armorMax", 0]];
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ GVAR(virtualItems) set [22, [[], [], [], []]];
|
|||||||
GVAR(virtualItems) set [23, []];
|
GVAR(virtualItems) set [23, []];
|
||||||
GVAR(virtualItems) set [24, []];
|
GVAR(virtualItems) set [24, []];
|
||||||
|
|
||||||
private _array = LIST_DEFAULTS select 2;
|
private _array = LIST_DEFAULTS select IDX_VIRT_ITEMS_ALL;
|
||||||
private _itemsCache = uiNamespace getVariable QGVAR(configItems);
|
private _itemsCache = uiNamespace getVariable QGVAR(configItems);
|
||||||
|
|
||||||
private _configCfgWeapons = configFile >> "CfgWeapons";
|
private _configCfgWeapons = configFile >> "CfgWeapons";
|
||||||
@ -35,7 +35,7 @@ private _configGlasses = configFile >> "CfgGlasses";
|
|||||||
case (
|
case (
|
||||||
isClass (_configMagazines >> _x) &&
|
isClass (_configMagazines >> _x) &&
|
||||||
{_x in (_itemsCache select 2)} &&
|
{_x in (_itemsCache select 2)} &&
|
||||||
{!(_x in (GVAR(virtualItems) select 2))}
|
{!(_x in (GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL))}
|
||||||
): {
|
): {
|
||||||
(GVAR(virtualItems) select 19) pushBackUnique _x;
|
(GVAR(virtualItems) select 19) pushBackUnique _x;
|
||||||
};
|
};
|
||||||
@ -61,7 +61,7 @@ private _configGlasses = configFile >> "CfgGlasses";
|
|||||||
// acc
|
// acc
|
||||||
case (
|
case (
|
||||||
isClass (_configCfgWeapons >> _x) &&
|
isClass (_configCfgWeapons >> _x) &&
|
||||||
{!(_x in ((GVAR(virtualItems) select 1) select 0))} &&
|
{!(_x in ((GVAR(virtualItems) select IDX_VIRT_ATTACHEMENTS) select 0))} &&
|
||||||
{_x in ((_itemsCache select 1) select 0)}
|
{_x in ((_itemsCache select 1) select 0)}
|
||||||
): {
|
): {
|
||||||
((GVAR(virtualItems) select 22) select 0) pushBackUnique _x;
|
((GVAR(virtualItems) select 22) select 0) pushBackUnique _x;
|
||||||
@ -70,7 +70,7 @@ private _configGlasses = configFile >> "CfgGlasses";
|
|||||||
// acc
|
// acc
|
||||||
case (
|
case (
|
||||||
isClass (_configCfgWeapons >> _x) &&
|
isClass (_configCfgWeapons >> _x) &&
|
||||||
{!(_x in ((GVAR(virtualItems) select 1) select 1))} &&
|
{!(_x in ((GVAR(virtualItems) select IDX_VIRT_ATTACHEMENTS) select 1))} &&
|
||||||
{_x in ((_itemsCache select 1) select 1)}
|
{_x in ((_itemsCache select 1) select 1)}
|
||||||
): {
|
): {
|
||||||
((GVAR(virtualItems) select 22) select 1) pushBackUnique _x;
|
((GVAR(virtualItems) select 22) select 1) pushBackUnique _x;
|
||||||
@ -79,7 +79,7 @@ private _configGlasses = configFile >> "CfgGlasses";
|
|||||||
// acc
|
// acc
|
||||||
case (
|
case (
|
||||||
isClass (_configCfgWeapons >> _x) &&
|
isClass (_configCfgWeapons >> _x) &&
|
||||||
{!(_x in ((GVAR(virtualItems) select 1) select 2))} &&
|
{!(_x in ((GVAR(virtualItems) select IDX_VIRT_ATTACHEMENTS) select 2))} &&
|
||||||
{_x in ((_itemsCache select 1) select 2)}
|
{_x in ((_itemsCache select 1) select 2)}
|
||||||
): {
|
): {
|
||||||
((GVAR(virtualItems) select 22) select 2) pushBackUnique _x;
|
((GVAR(virtualItems) select 22) select 2) pushBackUnique _x;
|
||||||
@ -87,7 +87,7 @@ private _configGlasses = configFile >> "CfgGlasses";
|
|||||||
// acc
|
// acc
|
||||||
case (
|
case (
|
||||||
isClass (_configCfgWeapons >> _x) &&
|
isClass (_configCfgWeapons >> _x) &&
|
||||||
{!(_x in ((GVAR(virtualItems) select 1) select 3))} &&
|
{!(_x in ((GVAR(virtualItems) select IDX_VIRT_ATTACHEMENTS) select 3))} &&
|
||||||
{_x in ((_itemsCache select 1) select 3)}
|
{_x in ((_itemsCache select 1) select 3)}
|
||||||
): {
|
): {
|
||||||
((GVAR(virtualItems) select 22) select 3) pushBackUnique _x;
|
((GVAR(virtualItems) select 22) select 3) pushBackUnique _x;
|
||||||
|
@ -19,8 +19,8 @@ private _weaponCfg = configFile >> "CfgWeapons";
|
|||||||
private _magCfg = configFile >> "CfgMagazines";
|
private _magCfg = configFile >> "CfgMagazines";
|
||||||
private _vehcCfg = configFile >> "CfgVehicles";
|
private _vehcCfg = configFile >> "CfgVehicles";
|
||||||
private _glassesCfg = configFile >> "CfgGlasses";
|
private _glassesCfg = configFile >> "CfgGlasses";
|
||||||
private _weaponsArray = GVAR(virtualItems) select 0;
|
private _weaponsArray = GVAR(virtualItems) select IDX_VIRT_WEAPONS;
|
||||||
private _accsArray = GVAR(virtualItems) select 1;
|
private _accsArray = GVAR(virtualItems) select IDX_VIRT_ATTACHEMENTS;
|
||||||
|
|
||||||
private _nullItemsAmount = 0;
|
private _nullItemsAmount = 0;
|
||||||
private _unavailableItemsAmount = 0;
|
private _unavailableItemsAmount = 0;
|
||||||
@ -58,7 +58,7 @@ private _fnc_weaponCheck = {
|
|||||||
private _mag = _x select 0;
|
private _mag = _x select 0;
|
||||||
|
|
||||||
if (isClass (_magCfg >> _mag)) then {
|
if (isClass (_magCfg >> _mag)) then {
|
||||||
if !(_mag in (GVAR(virtualItems) select 2)) then {
|
if !(_mag in (GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL)) then {
|
||||||
|
|
||||||
_unavailableItemsList pushBackUnique _mag;
|
_unavailableItemsList pushBackUnique _mag;
|
||||||
_dataPath set [_forEachIndex, []];
|
_dataPath set [_forEachIndex, []];
|
||||||
@ -137,7 +137,7 @@ for "_dataIndex" from 0 to 9 do {
|
|||||||
|
|
||||||
if (isClass (_magCfg >> _item)) then {
|
if (isClass (_magCfg >> _item)) then {
|
||||||
if !(
|
if !(
|
||||||
_item in (GVAR(virtualItems) select 2) ||
|
_item in (GVAR(virtualItems) select IDX_VIRT_ITEMS_ALL) ||
|
||||||
_item in (GVAR(virtualItems) select 15) ||
|
_item in (GVAR(virtualItems) select 15) ||
|
||||||
_item in (GVAR(virtualItems) select 16)
|
_item in (GVAR(virtualItems) select 16)
|
||||||
) then {
|
) then {
|
||||||
@ -173,7 +173,7 @@ for "_dataIndex" from 0 to 9 do {
|
|||||||
|
|
||||||
if (isClass (_weaponCfg >> _item)) then {
|
if (isClass (_weaponCfg >> _item)) then {
|
||||||
|
|
||||||
if !(_item in (GVAR(virtualItems) select 3)) then {
|
if !(_item in (GVAR(virtualItems) select IDX_VIRT_HEADGEAR)) then {
|
||||||
|
|
||||||
_unavailableItemsList pushBackUnique _item;
|
_unavailableItemsList pushBackUnique _item;
|
||||||
_loadout set [_dataIndex, ""];
|
_loadout set [_dataIndex, ""];
|
||||||
@ -195,7 +195,7 @@ for "_dataIndex" from 0 to 9 do {
|
|||||||
|
|
||||||
if (isClass (_glassesCfg >> _item)) then {
|
if (isClass (_glassesCfg >> _item)) then {
|
||||||
|
|
||||||
if !(_item in (GVAR(virtualItems) select 7)) then {
|
if !(_item in (GVAR(virtualItems) select IDX_VIRT_GOGGLES)) then {
|
||||||
|
|
||||||
_unavailableItemsList pushBackUnique _item;
|
_unavailableItemsList pushBackUnique _item;
|
||||||
_loadout set [_dataIndex, ""];
|
_loadout set [_dataIndex, ""];
|
||||||
|
@ -418,9 +418,13 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_sortByProtectionBallistic">
|
<Key ID="STR_ACE_Arsenal_sortByProtectionBallistic">
|
||||||
<English>Sort by ballistic protection</English>
|
<English>Sort by ballistic protection</English>
|
||||||
|
<French>Trier par protection balistique</French>
|
||||||
|
<Japanese>防弾性能で並び替え</Japanese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_sortByProtectionExplosive">
|
<Key ID="STR_ACE_Arsenal_sortByProtectionExplosive">
|
||||||
<English>Sort by explosive protection</English>
|
<English>Sort by explosive protection</English>
|
||||||
|
<French>Trier par résistance aux explosifs</French>
|
||||||
|
<Japanese>防爆性能で並び替え</Japanese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_buttonShareTooltip">
|
<Key ID="STR_ACE_Arsenal_buttonShareTooltip">
|
||||||
<English>Share or stop sharing the selected loadout</English>
|
<English>Share or stop sharing the selected loadout</English>
|
||||||
@ -1090,7 +1094,6 @@
|
|||||||
<Spanish>Niveles de potasio</Spanish>
|
<Spanish>Niveles de potasio</Spanish>
|
||||||
<German>Kaliumspiegel</German>
|
<German>Kaliumspiegel</German>
|
||||||
<French>Taux de potassium</French>
|
<French>Taux de potassium</French>
|
||||||
<Japanese>カリウム レベル</Japanese>
|
|
||||||
<Chinesesimp>钾水平</Chinesesimp>
|
<Chinesesimp>钾水平</Chinesesimp>
|
||||||
<Chinese>鉀水平</Chinese>
|
<Chinese>鉀水平</Chinese>
|
||||||
<Italian>Ilvello di potassio</Italian>
|
<Italian>Ilvello di potassio</Italian>
|
||||||
@ -1099,6 +1102,7 @@
|
|||||||
<Portuguese>Níveis de Potássio</Portuguese>
|
<Portuguese>Níveis de Potássio</Portuguese>
|
||||||
<Czech>Úrovně draslíku</Czech>
|
<Czech>Úrovně draslíku</Czech>
|
||||||
<Turkish>Potasyum seviyeleri</Turkish>
|
<Turkish>Potasyum seviyeleri</Turkish>
|
||||||
|
<Japanese>カリウム含有量</Japanese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statMagnification">
|
<Key ID="STR_ACE_Arsenal_statMagnification">
|
||||||
<English>Magnification</English>
|
<English>Magnification</English>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
if (GVAR(advancedCorrections)) then {
|
if (GVAR(advancedCorrections)) then {
|
||||||
["LandVehicle", "init", {
|
["LandVehicle", "init", {
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
private _vehicleCfg = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _vehicleCfg = configOf _vehicle;
|
||||||
// config "ace_artillerytables_applyCorrections" [0 disabled, 1 enabled] falls back to artilleryScanner
|
// config "ace_artillerytables_applyCorrections" [0 disabled, 1 enabled] falls back to artilleryScanner
|
||||||
private _applyCorrections = if (isNumber (_vehicleCfg >> QGVAR(applyCorrections))) then {
|
private _applyCorrections = if (isNumber (_vehicleCfg >> QGVAR(applyCorrections))) then {
|
||||||
getNumber (_vehicleCfg >> QGVAR(applyCorrections))
|
getNumber (_vehicleCfg >> QGVAR(applyCorrections))
|
||||||
|
@ -4,7 +4,7 @@ class CfgPatches {
|
|||||||
class ADDON {
|
class ADDON {
|
||||||
name = COMPONENT_NAME;
|
name = COMPONENT_NAME;
|
||||||
units[] = {};
|
units[] = {};
|
||||||
weapons[] = {};
|
weapons[] = {"ACE_artilleryTable"};
|
||||||
requiredVersion = REQUIRED_VERSION;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {"ace_interaction"};
|
requiredAddons[] = {"ace_interaction"};
|
||||||
author = ECSTRING(common,ACETeam);
|
author = ECSTRING(common,ACETeam);
|
||||||
|
@ -7,7 +7,7 @@ private _fnc_showPropertyDefined = {
|
|||||||
params ["_configBase", "_configProperty"];
|
params ["_configBase", "_configProperty"];
|
||||||
|
|
||||||
private _customAll = configProperties [_configBase, 'isClass _x && {isNumber (_x >> _configProperty)}', true];
|
private _customAll = configProperties [_configBase, 'isClass _x && {isNumber (_x >> _configProperty)}', true];
|
||||||
private _customExplicit = _customAll select {!([] isEqualTo configProperties [_x, 'configName _x == _configProperty', false])};
|
private _customExplicit = _customAll select {[] isNotEqualTo configProperties [_x, 'configName _x == _configProperty', false]};
|
||||||
diag_log text format ["%1 with custom %2: %3 Explicit, %4 Total]", configName _configBase, _configProperty, count _customExplicit, count _customAll];
|
diag_log text format ["%1 with custom %2: %3 Explicit, %4 Total]", configName _configBase, _configProperty, count _customExplicit, count _customAll];
|
||||||
diag_log text format [" - Defined: %1", _customExplicit apply {configName _x}];
|
diag_log text format [" - Defined: %1", _customExplicit apply {configName _x}];
|
||||||
diag_log text format [" - Inherited: %1", _customAll apply {[configName _x, getNumber (_x >> _configProperty)]}];
|
diag_log text format [" - Inherited: %1", _customAll apply {[configName _x, getNumber (_x >> _configProperty)]}];
|
||||||
|
@ -26,7 +26,7 @@ private _rangeTablesShown = ace_player getVariable [QGVAR(rangeTablesShown), []]
|
|||||||
TRACE_2("searching for new vehicles",_vehicleAdded,_rangeTablesShown);
|
TRACE_2("searching for new vehicles",_vehicleAdded,_rangeTablesShown);
|
||||||
|
|
||||||
{
|
{
|
||||||
private _vehicleCfg = configFile >> "CfgVehicles" >> typeOf _x;
|
private _vehicleCfg = configOf _x;
|
||||||
// config "ace_artillerytables_showRangetable" [0 disabled, 1 enabled] falls back to artilleryScanner
|
// config "ace_artillerytables_showRangetable" [0 disabled, 1 enabled] falls back to artilleryScanner
|
||||||
private _showRangetable = if (isNumber (_vehicleCfg >> QGVAR(showRangetable))) then {
|
private _showRangetable = if (isNumber (_vehicleCfg >> QGVAR(showRangetable))) then {
|
||||||
getNumber (_vehicleCfg >> QGVAR(showRangetable))
|
getNumber (_vehicleCfg >> QGVAR(showRangetable))
|
||||||
|
@ -10,7 +10,7 @@ private _categoryName = [format ["ACE %1", localize "str_a3_cfgmarkers_nato_art"
|
|||||||
true, // isGlobal
|
true, // isGlobal
|
||||||
{[QGVAR(advancedCorrections), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
{[QGVAR(advancedCorrections), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||||
true // Needs mission restart
|
true // Needs mission restart
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(disableArtilleryComputer), "CHECKBOX",
|
QGVAR(disableArtilleryComputer), "CHECKBOX",
|
||||||
@ -20,4 +20,4 @@ private _categoryName = [format ["ACE %1", localize "str_a3_cfgmarkers_nato_art"
|
|||||||
true, // isGlobal
|
true, // isGlobal
|
||||||
{[QGVAR(disableArtilleryComputer), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
{[QGVAR(disableArtilleryComputer), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||||
false // Needs mission restart
|
false // Needs mission restart
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
@ -60,7 +60,7 @@ if (_parseInput) then {
|
|||||||
_subsonicDrop = _transonicDrop max _subsonicDrop;
|
_subsonicDrop = _transonicDrop max _subsonicDrop;
|
||||||
};
|
};
|
||||||
|
|
||||||
if ((GVAR(truingDropDropData) select 0) == 0 || {!([_transonicRange, _subsonicRange] isEqualTo GVAR(truingDropRangeData))}) then {
|
if ((GVAR(truingDropDropData) select 0) == 0 || {[_transonicRange, _subsonicRange] isNotEqualTo GVAR(truingDropRangeData)}) then {
|
||||||
if (isNil QGVAR(targetSolutionInput)) then {
|
if (isNil QGVAR(targetSolutionInput)) then {
|
||||||
call FUNC(calculate_target_solution);
|
call FUNC(calculate_target_solution);
|
||||||
};
|
};
|
||||||
|
@ -74,7 +74,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
|||||||
_virtualPosASL = _virtualPosASL vectorAdd ((positionCameraToWorld [0.3,0,0]) vectorDiff (positionCameraToWorld [0,0,0]));
|
_virtualPosASL = _virtualPosASL vectorAdd ((positionCameraToWorld [0.3,0,0]) vectorDiff (positionCameraToWorld [0,0,0]));
|
||||||
};
|
};
|
||||||
private _virtualPos = _virtualPosASL call EFUNC(common,ASLToPosition);
|
private _virtualPos = _virtualPosASL call EFUNC(common,ASLToPosition);
|
||||||
private _lineInterection = !((lineIntersectsSurfaces [eyePos ACE_player, _virtualPosASL, ACE_player]) isEqualTo []);
|
private _lineInterection = ((lineIntersectsSurfaces [eyePos ACE_player, _virtualPosASL, ACE_player]) isNotEqualTo []);
|
||||||
|
|
||||||
//Don't allow placing in a bad position:
|
//Don't allow placing in a bad position:
|
||||||
if (_lineInterection && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;};
|
if (_lineInterection && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;};
|
||||||
|
@ -46,8 +46,8 @@ if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find
|
|||||||
private _isChemlight = _attachedObject isKindOf "Chemlight_base";
|
private _isChemlight = _attachedObject isKindOf "Chemlight_base";
|
||||||
|
|
||||||
// Exit if can't add the item
|
// Exit if can't add the item
|
||||||
if (!(_unit canAdd _itemName) && {!_isChemlight}) exitWith {
|
if (!([_unit, _itemName] call CBA_fnc_canAddItem) && {!_isChemlight}) exitWith {
|
||||||
[localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured);
|
[LELSTRING(common,Inventory_Full)] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add item to inventory (unless it's a chemlight)
|
// Add item to inventory (unless it's a chemlight)
|
||||||
|
@ -154,23 +154,6 @@
|
|||||||
<Chinesesimp>已取下萤光棒</Chinesesimp>
|
<Chinesesimp>已取下萤光棒</Chinesesimp>
|
||||||
<Turkish>Işık Çubuğu Söküldü</Turkish>
|
<Turkish>Işık Çubuğu Söküldü</Turkish>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Attach_Inventory_Full">
|
|
||||||
<English>No inventory space</English>
|
|
||||||
<German>Kein Platz im Inventar</German>
|
|
||||||
<Spanish>Sin espacio en inventario</Spanish>
|
|
||||||
<Polish>Brak miejsca w ekwipunku</Polish>
|
|
||||||
<French>Pas de place dans l'inventaire</French>
|
|
||||||
<Czech>Nedostatek místa v inventáři</Czech>
|
|
||||||
<Portuguese>Sem espaço no inventário</Portuguese>
|
|
||||||
<Italian>Non hai più spazio</Italian>
|
|
||||||
<Hungarian>Nincs több hely</Hungarian>
|
|
||||||
<Russian>В инвентаре нет места</Russian>
|
|
||||||
<Japanese>インベントリに空きがない</Japanese>
|
|
||||||
<Korean>넣을 공간이 없음</Korean>
|
|
||||||
<Chinese>無可用空間</Chinese>
|
|
||||||
<Chinesesimp>无可用空间</Chinesesimp>
|
|
||||||
<Turkish>Envanter de alan yok</Turkish>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_Attach_IrStrobe_Name">
|
<Key ID="STR_ACE_Attach_IrStrobe_Name">
|
||||||
<English>IR Strobe</English>
|
<English>IR Strobe</English>
|
||||||
<German>IR-Stroboskop</German>
|
<German>IR-Stroboskop</German>
|
||||||
|
@ -34,7 +34,7 @@ class EGVAR(arsenal,stats) {
|
|||||||
displayName= CSTRING(statBallisticCoef);
|
displayName= CSTRING(statBallisticCoef);
|
||||||
showText= 1;
|
showText= 1;
|
||||||
textStatement = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); private _ballisticCoef = getArray (_ammoCfg >> _stat select 1); _ballisticCoef sort false; format [ARR_4('%1 G%2 (%3)', _ballisticCoef select 0 ,getNumber (_ammoCfg >> _stat select 0), getText (_ammoCfg >> _stat select 2))]);
|
textStatement = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); private _ballisticCoef = getArray (_ammoCfg >> _stat select 1); _ballisticCoef sort false; format [ARR_4('%1 G%2 (%3)', _ballisticCoef select 0 ,getNumber (_ammoCfg >> _stat select 0), getText (_ammoCfg >> _stat select 2))]);
|
||||||
condition = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); !(getArray (_ammoCfg >> _stat select 1) isEqualTo []));
|
condition = QUOTE(params[ARR_2('_stat', '_config')]; private _ammoCfg = (configFile >> 'CfgAmmo' >> (getText (_config >> 'ammo'))); (getArray (_ammoCfg >> _stat select 1) isNotEqualTo []));
|
||||||
tabs[] ={{}, {4}};
|
tabs[] ={{}, {4}};
|
||||||
};
|
};
|
||||||
class ACE_bulletMass: statBase {
|
class ACE_bulletMass: statBase {
|
||||||
|
@ -130,6 +130,14 @@ class CfgAmmo {
|
|||||||
ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
|
ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
|
||||||
ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
|
ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class B_556x45_dual: B_556x45_Ball {
|
||||||
|
airFriction = -0.00055;
|
||||||
|
ACE_ammoTempMuzzleVelocityShifts[] = {-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
||||||
|
ACE_muzzleVelocities[] = {268}; // at 21°C, at 15°C 267 m/s according with the 20Rnd_556x45_UW_mag initSpeed
|
||||||
|
ACE_barrelLengths[] = {457.2}; // according with the SDAR barrel length: https://en.wikipedia.org/wiki/Kel-Tec_RFB
|
||||||
|
};
|
||||||
|
|
||||||
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
||||||
airFriction=-0.00111805;
|
airFriction=-0.00111805;
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
|
@ -67,6 +67,15 @@ class CfgMagazineWells {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CBA_556x45_SCAR_EGLM {
|
||||||
|
ADDON[] = {
|
||||||
|
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||||
|
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||||
|
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||||
|
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
class STANAG_556x45 { //Vanilla magwell
|
class STANAG_556x45 { //Vanilla magwell
|
||||||
ADDON[] = {
|
ADDON[] = {
|
||||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||||
|
@ -22,4 +22,4 @@ private _statement = {
|
|||||||
[_player, _target, _vehicle] call FUNC(doLoadCaptive);
|
[_player, _target, _vehicle] call FUNC(doLoadCaptive);
|
||||||
};
|
};
|
||||||
|
|
||||||
[_target call EFUNC(common,nearestVehiclesFreeSeat), _statement, _target] call EFUNC(interact_menu,createVehiclesActions)
|
[[_target, nil, true] call EFUNC(common,nearestVehiclesFreeSeat), _statement, _target] call EFUNC(interact_menu,createVehiclesActions)
|
||||||
|
@ -34,7 +34,7 @@ if (isNull _target || {(vehicle _target) != _target} || {!(_target getVariable [
|
|||||||
|
|
||||||
if (isNull _vehicle) then {
|
if (isNull _vehicle) then {
|
||||||
// Looking at a captive unit, get nearest vehicle with valid seat:
|
// Looking at a captive unit, get nearest vehicle with valid seat:
|
||||||
_vehicle = (_target call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
_vehicle = ([_target, nil, true] call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
||||||
} else {
|
} else {
|
||||||
// We have a vehicle picked, make sure it has empty seats:
|
// We have a vehicle picked, make sure it has empty seats:
|
||||||
if (_vehicle emptyPositions "cargo" == 0 && {_vehicle emptyPositions "gunner" == 0}) then {
|
if (_vehicle emptyPositions "cargo" == 0 && {_vehicle emptyPositions "gunner" == 0}) then {
|
||||||
|
@ -31,7 +31,7 @@ if (isNull _target || {(vehicle _target) != _target} || {!(_target getVariable [
|
|||||||
|
|
||||||
if (isNull _vehicle) then {
|
if (isNull _vehicle) then {
|
||||||
// Looking at a captive unit, get nearest vehicle with valid seat:
|
// Looking at a captive unit, get nearest vehicle with valid seat:
|
||||||
_vehicle = (_target call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
_vehicle = ([_target, nil, true] call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
||||||
} else {
|
} else {
|
||||||
// We have a vehicle picked, make sure it has empty seats:
|
// We have a vehicle picked, make sure it has empty seats:
|
||||||
if (_vehicle emptyPositions "cargo" == 0 && {_vehicle emptyPositions "gunner" == 0}) then {
|
if (_vehicle emptyPositions "cargo" == 0 && {_vehicle emptyPositions "gunner" == 0}) then {
|
||||||
|
@ -36,7 +36,7 @@ if (local _unit) then {
|
|||||||
_x params ["_xUnit", "", "", "_xTurretPath"];
|
_x params ["_xUnit", "", "", "_xTurretPath"];
|
||||||
if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath};
|
if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath};
|
||||||
} forEach (fullCrew (vehicle _unit));
|
} forEach (fullCrew (vehicle _unit));
|
||||||
if (!(_turretPath isEqualTo [])) then {
|
if (_turretPath isNotEqualTo []) then {
|
||||||
TRACE_1("Setting FFV Handcuffed Animation",_turretPath);
|
TRACE_1("Setting FFV Handcuffed Animation",_turretPath);
|
||||||
[_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation);
|
[_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation);
|
||||||
[_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation);
|
[_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation);
|
||||||
|
@ -10,7 +10,7 @@ class Cfg3DEN {
|
|||||||
control = "Edit";
|
control = "Edit";
|
||||||
|
|
||||||
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSpace););
|
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSpace););
|
||||||
defaultValue = QUOTE(GET_NUMBER(configFile >> 'CfgVehicles' >> typeOf _this >> QQGVAR(space),0));
|
defaultValue = QUOTE(GET_NUMBER(configOf _this >> QQGVAR(space),0));
|
||||||
|
|
||||||
validate = "number";
|
validate = "number";
|
||||||
condition = "objectHasInventoryCargo";
|
condition = "objectHasInventoryCargo";
|
||||||
@ -24,7 +24,7 @@ class Cfg3DEN {
|
|||||||
|
|
||||||
// Expression only runs on the server, must handle actions for all machines and future JIPs (Why BI?!)
|
// Expression only runs on the server, must handle actions for all machines and future JIPs (Why BI?!)
|
||||||
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSize););
|
expression = QUOTE([ARR_2(_this,_value)] call DFUNC(setSize););
|
||||||
defaultValue = QUOTE(GET_NUMBER(configFile >> 'CfgVehicles' >> typeOf _this >> QQGVAR(size),-1));
|
defaultValue = QUOTE(GET_NUMBER(configOf _this >> QQGVAR(size),-1));
|
||||||
|
|
||||||
validate = "number";
|
validate = "number";
|
||||||
condition = "1-objectBrain";
|
condition = "1-objectBrain";
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
// Show hint as feedback
|
// Show hint as feedback
|
||||||
private _hint = [LSTRING(LoadingFailed), LSTRING(LoadedItem)] select _loaded;
|
private _hint = [LSTRING(LoadingFailed), LSTRING(LoadedItem)] select _loaded;
|
||||||
private _itemName = getText (configFile >> "CfgVehicles" >> typeOf _item >> "displayName");
|
private _itemName = getText (configOf _item >> "displayName");
|
||||||
private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
private _vehicleName = getText (configOf _vehicle >> "displayName");
|
||||||
|
|
||||||
[[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured);
|
[[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured);
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
// Show hint as feedback
|
// Show hint as feedback
|
||||||
private _hint = [LSTRING(UnloadingFailed), LSTRING(UnloadedItem)] select _unloaded;
|
private _hint = [LSTRING(UnloadingFailed), LSTRING(UnloadedItem)] select _unloaded;
|
||||||
private _itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName");
|
private _itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName");
|
||||||
private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
private _vehicleName = getText (configOf _vehicle >> "displayName");
|
||||||
|
|
||||||
[[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured);
|
[[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured);
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ GVAR(vehicleAction) = [
|
|||||||
{
|
{
|
||||||
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
||||||
GVAR(enable) &&
|
GVAR(enable) &&
|
||||||
{(_target getVariable [QGVAR(hasCargo), getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(hasCargo)) == 1])} &&
|
{(_target getVariable [QGVAR(hasCargo), getNumber (configOf _target >> QGVAR(hasCargo)) == 1])} &&
|
||||||
{locked _target < 2} &&
|
{locked _target < 2} &&
|
||||||
{([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} &&
|
{([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE} &&
|
||||||
{alive _target} &&
|
{alive _target} &&
|
||||||
@ -99,12 +99,12 @@ GVAR(objectAction) = [
|
|||||||
{
|
{
|
||||||
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
||||||
GVAR(enable) &&
|
GVAR(enable) &&
|
||||||
{(_target getVariable [QGVAR(canLoad), getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(canLoad))]) in [true, 1]} &&
|
{(_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad))]) in [true, 1]} &&
|
||||||
{locked _target < 2} &&
|
{locked _target < 2} &&
|
||||||
{alive _target} &&
|
{alive _target} &&
|
||||||
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
|
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
|
||||||
{((nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) findIf {
|
{((nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) findIf {
|
||||||
private _hasCargoConfig = 1 == getNumber (configFile >> "CfgVehicles" >> typeOf _x >> QGVAR(hasCargo));
|
private _hasCargoConfig = 1 == getNumber (configOf _x >> QGVAR(hasCargo));
|
||||||
private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false];
|
private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false];
|
||||||
(_hasCargoConfig || {_hasCargoPublic}) && {_x != _target} && {alive _x} && {locked _x < 2} &&
|
(_hasCargoConfig || {_hasCargoPublic}) && {_x != _target} && {alive _x} && {locked _x < 2} &&
|
||||||
{([_target, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}
|
{([_target, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}
|
||||||
|
@ -23,7 +23,7 @@ private _statement = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private _vehicles = (nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) select {
|
private _vehicles = (nearestObjects [_target, GVAR(cargoHolderTypes), (MAX_LOAD_DISTANCE + 10)]) select {
|
||||||
private _hasCargoConfig = 1 == getNumber (configFile >> "CfgVehicles" >> typeOf _x >> QGVAR(hasCargo));
|
private _hasCargoConfig = 1 == getNumber (configOf _x >> QGVAR(hasCargo));
|
||||||
private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false];
|
private _hasCargoPublic = _x getVariable [QGVAR(hasCargo), false];
|
||||||
(_hasCargoConfig || {_hasCargoPublic}) && {_x != _target} && {alive _x} && {locked _x < 2} &&
|
(_hasCargoConfig || {_hasCargoPublic}) && {_x != _target} && {alive _x} && {locked _x < 2} &&
|
||||||
{([_target, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}
|
{([_target, _x] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}
|
||||||
|
@ -21,7 +21,7 @@ params [["_item", "", [objNull,""]], "_vehicle", ["_ignoreInteraction", false]];
|
|||||||
|
|
||||||
if ((!_ignoreInteraction) && {speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
|
if ((!_ignoreInteraction) && {speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
|
||||||
|
|
||||||
if (_item isEqualType objNull && {{alive _x && {getText (configFile >> "CfgVehicles" >> typeOf _x >> "simulation") != "UAVPilot"}} count crew _item > 0}) exitWith {
|
if (_item isEqualType objNull && {{alive _x && {getText (configOf _x >> "simulation") != "UAVPilot"}} count crew _item > 0}) exitWith {
|
||||||
TRACE_1("item is occupied",_item);
|
TRACE_1("item is occupied",_item);
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
@ -18,4 +18,4 @@
|
|||||||
params ["_object"];
|
params ["_object"];
|
||||||
// TRACE_1("params",_object);
|
// TRACE_1("params",_object);
|
||||||
|
|
||||||
(_object getVariable [QGVAR(space), getNumber (configFile >> "CfgVehicles" >> typeOf _object >> QGVAR(space))]) max 0
|
(_object getVariable [QGVAR(space), getNumber (configOf _object >> QGVAR(space))]) max 0
|
||||||
|
@ -76,7 +76,7 @@ if (_vehicle isKindOf "Air") then {
|
|||||||
private _turretPath = _player call CBA_fnc_turretPath;
|
private _turretPath = _player call CBA_fnc_turretPath;
|
||||||
(_player == (driver _target)) || // pilot
|
(_player == (driver _target)) || // pilot
|
||||||
{(getNumber (([_target, _turretPath] call CBA_fnc_getTurret) >> "isCopilot")) == 1} || // coPilot
|
{(getNumber (([_target, _turretPath] call CBA_fnc_getTurret) >> "isCopilot")) == 1} || // coPilot
|
||||||
{_turretPath in (getArray (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(loadmasterTurrets)))}} // loadMaster turret from config
|
{_turretPath in (getArray (configOf _target >> QGVAR(loadmasterTurrets)))}} // loadMaster turret from config
|
||||||
};
|
};
|
||||||
private _statement = {
|
private _statement = {
|
||||||
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
||||||
|
@ -99,8 +99,8 @@ if (_showHint) then {
|
|||||||
[
|
[
|
||||||
[
|
[
|
||||||
LSTRING(UnloadedItem),
|
LSTRING(UnloadedItem),
|
||||||
getText (configFile >> "CfgVehicles" >> typeOf _itemObject >> "displayName"),
|
getText (configOf _itemObject >> "displayName"),
|
||||||
getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName")
|
getText (configOf _vehicle >> "displayName")
|
||||||
],
|
],
|
||||||
3
|
3
|
||||||
] call EFUNC(common,displayTextStructured);
|
] call EFUNC(common,displayTextStructured);
|
||||||
|
@ -60,7 +60,7 @@ if ([_object, _vehicle] call FUNC(canLoadItemIn)) then {
|
|||||||
] call EFUNC(common,progressBar);
|
] call EFUNC(common,progressBar);
|
||||||
_return = true;
|
_return = true;
|
||||||
} else {
|
} else {
|
||||||
private _displayName = getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName");
|
private _displayName = getText (configOf _object >> "displayName");
|
||||||
|
|
||||||
[[LSTRING(LoadingFailed), _displayName], 3] call EFUNC(common,displayTextStructured);
|
[[LSTRING(LoadingFailed), _displayName], 3] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
@ -34,4 +34,4 @@ if (count _loaded != count _newLoaded) then {
|
|||||||
_vehicle setVariable [QGVAR(loaded), _newLoaded, true];
|
_vehicle setVariable [QGVAR(loaded), _newLoaded, true];
|
||||||
};
|
};
|
||||||
|
|
||||||
_vehicle setVariable [QGVAR(space), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(space)) - _totalSpaceOccupied, true];
|
_vehicle setVariable [QGVAR(space), getNumber (configOf _vehicle >> QGVAR(space)) - _totalSpaceOccupied, true];
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
{[QGVAR(enable), _this] call EFUNC(common,cbaSettings_settingChanged)}
|
{[QGVAR(enable), _this] call EFUNC(common,cbaSettings_settingChanged)}
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(loadTimeCoefficient), "SLIDER",
|
QGVAR(loadTimeCoefficient), "SLIDER",
|
||||||
@ -14,7 +14,7 @@
|
|||||||
[0, 10, 5, 1],
|
[0, 10, 5, 1],
|
||||||
true,
|
true,
|
||||||
{[QGVAR(loadTimeCoefficient), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
|
{[QGVAR(loadTimeCoefficient), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(paradropTimeCoefficent), "SLIDER",
|
QGVAR(paradropTimeCoefficent), "SLIDER",
|
||||||
@ -23,6 +23,7 @@
|
|||||||
[0, 10, 2.5, 1],
|
[0, 10, 2.5, 1],
|
||||||
true,
|
true,
|
||||||
{[QGVAR(paradropTimeCoefficent), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
|
{[QGVAR(paradropTimeCoefficent), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
|
||||||
|
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_settings_fnc_init;
|
||||||
|
|
||||||
[
|
[
|
||||||
@ -32,4 +33,4 @@
|
|||||||
[["CargoNet_01_box_F", "Land_WoodenBox_02_F"], [LSTRING(cargoNetType_modernStyle), LSTRING(cargoNetType_ww2)], 0],
|
[["CargoNet_01_box_F", "Land_WoodenBox_02_F"], [LSTRING(cargoNetType_modernStyle), LSTRING(cargoNetType_ww2)], 0],
|
||||||
true,
|
true,
|
||||||
{[QGVAR(cargoNetType), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
|
{[QGVAR(cargoNetType), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
class GVAR(menu) {
|
class GVAR(menu) {
|
||||||
idd = 314614;
|
idd = 314614;
|
||||||
movingEnable = true;
|
movingEnable = 1;
|
||||||
onLoad = QUOTE([_this select 0] call FUNC(onMenuOpen));
|
onLoad = QUOTE([_this select 0] call FUNC(onMenuOpen));
|
||||||
onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),nil)];);
|
onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),nil)];);
|
||||||
class controlsBackground {
|
class controlsBackground {
|
||||||
|
@ -9,11 +9,8 @@ class CfgVehicles {
|
|||||||
class ACE_Chemlights {
|
class ACE_Chemlights {
|
||||||
displayName = CSTRING(Action_Chemlights);
|
displayName = CSTRING(Action_Chemlights);
|
||||||
icon = "\a3\ui_f\data\gui\cfg\Hints\chemlights_ca.paa";
|
icon = "\a3\ui_f\data\gui\cfg\Hints\chemlights_ca.paa";
|
||||||
condition = QUOTE(count ([ACE_player] call FUNC(getShieldComponents)) > 0);
|
|
||||||
statement = "true";
|
|
||||||
exceptions[] = {"isNotDragging", "isNotSwimming", "notOnMap", "isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotDragging", "isNotSwimming", "notOnMap", "isNotInside", "isNotSitting"};
|
||||||
insertChildren = QUOTE(_this call DFUNC(compileChemlightMenu));
|
insertChildren = QUOTE(call DFUNC(compileChemlightMenu));
|
||||||
showDisabled = 0;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
params ["_dummy"];
|
params ["_dummy"];
|
||||||
|
|
||||||
private _chemlightClass = getText (configFile >> "CfgVehicles" >> typeOf _dummy >> "ACE_Attachable");
|
private _chemlightClass = getText (configOf _dummy >> "ACE_Attachable");
|
||||||
private _config = configFile >> "CfgAmmo" >> _chemlightClass;
|
private _config = configFile >> "CfgAmmo" >> _chemlightClass;
|
||||||
private _delay = getNumber (_config >> "explosionTime");
|
private _delay = getNumber (_config >> "explosionTime");
|
||||||
private _lifeTime = getNumber (_config >> "timeToLive");
|
private _lifeTime = getNumber (_config >> "timeToLive");
|
||||||
|
@ -49,23 +49,6 @@
|
|||||||
<Spanish>%1<br/>Preparado</Spanish>
|
<Spanish>%1<br/>Preparado</Spanish>
|
||||||
<Turkish>%1<br/> Hazırlandı</Turkish>
|
<Turkish>%1<br/> Hazırlandı</Turkish>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Chemlights_Inventory_Full">
|
|
||||||
<English>No inventory space</English>
|
|
||||||
<German>Kein Platz im Inventar</German>
|
|
||||||
<Spanish>Sin espacio en inventario</Spanish>
|
|
||||||
<Polish>Brak miejsca w ekwipunku</Polish>
|
|
||||||
<French>Pas de place dans l'inventaire</French>
|
|
||||||
<Czech>Nedostatek místa v inventáři</Czech>
|
|
||||||
<Portuguese>Sem espaço no inventário</Portuguese>
|
|
||||||
<Italian>Nessuno spazio nell'inventario</Italian>
|
|
||||||
<Hungarian>Nincs több hely</Hungarian>
|
|
||||||
<Russian>В инвентаре нет места</Russian>
|
|
||||||
<Japanese>インベントリに空きがありません</Japanese>
|
|
||||||
<Korean>소지품 공간이 없음</Korean>
|
|
||||||
<Chinese>已無存放空間</Chinese>
|
|
||||||
<Chinesesimp>已无存放空间</Chinesesimp>
|
|
||||||
<Turkish>Envanter de alan yok</Turkish>
|
|
||||||
</Key>
|
|
||||||
<Key ID="STR_ACE_Chemlights_Box_DisplayName">
|
<Key ID="STR_ACE_Chemlights_Box_DisplayName">
|
||||||
<English>[ACE] Chemlights</English>
|
<English>[ACE] Chemlights</English>
|
||||||
<Japanese>[ACE] ケミライト</Japanese>
|
<Japanese>[ACE] ケミライト</Japanese>
|
||||||
|
@ -8,14 +8,12 @@ class Extended_PreStart_EventHandlers {
|
|||||||
class Extended_PreInit_EventHandlers {
|
class Extended_PreInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
disableModuload = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Extended_PostInit_EventHandlers {
|
class Extended_PostInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
disableModuload = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ class RscTitles {
|
|||||||
class ACE_RscHint {
|
class ACE_RscHint {
|
||||||
idd = -1;
|
idd = -1;
|
||||||
onLoad = "uiNamespace setVariable ['ACE_ctrlHint', (_this select 0) displayCtrl 1];";
|
onLoad = "uiNamespace setVariable ['ACE_ctrlHint', (_this select 0) displayCtrl 1];";
|
||||||
movingEnable = false;
|
movingEnable = 0;
|
||||||
duration = 4;
|
duration = 4;
|
||||||
fadeIn = 0.2;
|
fadeIn = 0.2;
|
||||||
fadeOut = 0.2;
|
fadeOut = 0.2;
|
||||||
@ -48,7 +48,7 @@ class RscTitles {
|
|||||||
class ACE_RscErrorHint {
|
class ACE_RscErrorHint {
|
||||||
idd = -1;
|
idd = -1;
|
||||||
onLoad = "uiNamespace setVariable ['ACE_ctrlErrorHint', (_this select 0) displayCtrl 1];";
|
onLoad = "uiNamespace setVariable ['ACE_ctrlErrorHint', (_this select 0) displayCtrl 1];";
|
||||||
movingEnable = false;
|
movingEnable = 0;
|
||||||
duration = 999999;
|
duration = 999999;
|
||||||
fadeIn = 0.2;
|
fadeIn = 0.2;
|
||||||
fadeOut = 0.2;
|
fadeOut = 0.2;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
class GVAR(ProgressBar_Dialog) {
|
class GVAR(ProgressBar_Dialog) {
|
||||||
idd = -1;
|
idd = -1;
|
||||||
movingEnable = false;
|
movingEnable = 0;
|
||||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBG)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 2)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 3)];);
|
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBG)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 2)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 3)];);
|
||||||
objects[] = {};
|
objects[] = {};
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ class GVAR(ProgressBar_Dialog) {
|
|||||||
|
|
||||||
class GVAR(DisableMouse_Dialog) {
|
class GVAR(DisableMouse_Dialog) {
|
||||||
idd = -1;
|
idd = -1;
|
||||||
movingEnable = false;
|
movingEnable = 0;
|
||||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),_this select 0)];);
|
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),_this select 0)];);
|
||||||
objects[] = {};
|
objects[] = {};
|
||||||
class controlsBackground {
|
class controlsBackground {
|
||||||
|
@ -253,7 +253,7 @@ enableCamShake true;
|
|||||||
//FUNC(showHud) needs to be refreshed if it was set during mission init
|
//FUNC(showHud) needs to be refreshed if it was set during mission init
|
||||||
["ace_infoDisplayChanged", {
|
["ace_infoDisplayChanged", {
|
||||||
GVAR(showHudHash) params ["", "", "_masks"];
|
GVAR(showHudHash) params ["", "", "_masks"];
|
||||||
if !(_masks isEqualTo []) then {
|
if (_masks isNotEqualTo []) then {
|
||||||
[] call FUNC(showHud);
|
[] call FUNC(showHud);
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
@ -397,45 +397,53 @@ addMissionEventHandler ["PlayerViewChanged", {
|
|||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
GVAR(isReloading) = false;
|
GVAR(isReloading) = false;
|
||||||
|
GVAR(reloadMutex_lastMagazines) = [];
|
||||||
|
// When reloading, the new magazine is removed from inventory, an animation plays and then the old magazine is added
|
||||||
|
// If the animation is interrupted, the new magazine will be lost
|
||||||
|
["loadout", {
|
||||||
|
params ["_unit", "_newLoadout"];
|
||||||
|
private _mags = magazines _unit;
|
||||||
|
// if our magazine count dropped by 1, we might be reloading
|
||||||
|
if ((count GVAR(reloadMutex_lastMagazines)) - (count _mags) == 1) then {
|
||||||
|
private _weapon = currentWeapon _unit;
|
||||||
|
private _muzzle = currentMuzzle _unit;
|
||||||
|
if (_weapon == "") exitWith {};
|
||||||
|
private _wpnMzlConfig = configFile >> "CfgWeapons" >> _weapon;
|
||||||
|
if (_muzzle != _weapon) then { _wpnMzlConfig = _wpnMzlConfig >> _muzzle; };
|
||||||
|
|
||||||
["keyDown", {
|
private _compatMags = [_wpnMzlConfig] call CBA_fnc_compatibleMagazines;
|
||||||
if ((_this select 1) in actionKeys "ReloadMagazine" && {alive ACE_player}) then {
|
private _lastCompatMagCount = {_x in _compatMags} count GVAR(reloadMutex_lastMagazines);
|
||||||
//Ignore mounted (except ffv)
|
private _curCompatMagCount = {_x in _compatMags} count _mags;
|
||||||
if (!(player call CBA_fnc_canUseWeapon)) exitWith {};
|
TRACE_3("",_wpnMzlConfig,_lastCompatMagCount,_curCompatMagCount);
|
||||||
private _weapon = currentWeapon ACE_player;
|
if (_lastCompatMagCount - _curCompatMagCount != 1) exitWith {}; // check if magazines for our specific muzzle dropped by 1
|
||||||
|
|
||||||
if (_weapon != "") then {
|
private _gesture = getText (_wpnMzlConfig >> "reloadAction");
|
||||||
private _muzzle = currentMuzzle ACE_player;
|
if (_gesture == "") exitWith {}; //Ignore weapons with no reload gesture (binoculars)
|
||||||
private _wpnConfig = configFile >> "CfgWeapons" >> _weapon;
|
private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"];
|
||||||
private _gesture = getText ([_wpnConfig >> _muzzle, _wpnConfig] select (_weapon isEqualTo _muzzle) >> "reloadAction");
|
private _animConfig = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
|
||||||
if (_gesture == "") exitWith {}; //Ignore weapons with no reload gesture (binoculars)
|
private _duration = getNumber (configfile >> _animConfig >> "States" >> _gesture >> "speed");
|
||||||
private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"];
|
|
||||||
private _config = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
|
|
||||||
private _duration = getNumber (configfile >> _config >> "States" >> _gesture >> "speed");
|
|
||||||
|
|
||||||
if (_duration != 0) then {
|
if (_duration != 0) then {
|
||||||
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
|
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
|
||||||
} else {
|
} else {
|
||||||
_duration = 3;
|
_duration = 3;
|
||||||
};
|
};
|
||||||
|
|
||||||
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
|
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
|
||||||
GVAR(reloadingETA) = CBA_missionTime + _duration;
|
GVAR(reloadingETA) = CBA_missionTime + _duration;
|
||||||
|
|
||||||
if (!GVAR(isReloading)) then {
|
if (!GVAR(isReloading)) then {
|
||||||
GVAR(isReloading) = true;
|
GVAR(isReloading) = true;
|
||||||
|
|
||||||
[{
|
[{
|
||||||
CBA_missionTime > GVAR(reloadingETA)
|
CBA_missionTime > GVAR(reloadingETA)
|
||||||
},{
|
},{
|
||||||
GVAR(isReloading) = false;
|
GVAR(isReloading) = false;
|
||||||
}] call CBA_fnc_waitUntilAndExecute;
|
}] call CBA_fnc_waitUntilAndExecute;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
GVAR(reloadMutex_lastMagazines) = _mags;
|
||||||
false
|
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
}] call CBA_fnc_addDisplayHandler;
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
// Set up PlayerJIP eventhandler
|
// Set up PlayerJIP eventhandler
|
||||||
|
@ -159,7 +159,7 @@ class ACE_gui_buttonBase {
|
|||||||
colorBackgroundFocused[] = {1,1,1,1};
|
colorBackgroundFocused[] = {1,1,1,1};
|
||||||
periodFocus = 1.2;
|
periodFocus = 1.2;
|
||||||
periodOver = 0.8;
|
periodOver = 0.8;
|
||||||
default = false;
|
default = 0;
|
||||||
class HitZone {
|
class HitZone {
|
||||||
left = 0.00;
|
left = 0.00;
|
||||||
top = 0.00;
|
top = 0.00;
|
||||||
|
@ -28,16 +28,16 @@ private _addedToUnit = false;
|
|||||||
|
|
||||||
switch (_container) do {
|
switch (_container) do {
|
||||||
case "vest": {
|
case "vest": {
|
||||||
_canAdd = _unit canAddItemToVest _classname;
|
_canAdd = [_unit, _classname, 1, false, true, false] call CBA_fnc_canAddItem;
|
||||||
};
|
};
|
||||||
case "backpack": {
|
case "backpack": {
|
||||||
_canAdd = _unit canAddItemToBackpack _classname;
|
_canAdd = [_unit, _classname, 1, false, false, true] call CBA_fnc_canAddItem;
|
||||||
};
|
};
|
||||||
case "uniform": {
|
case "uniform": {
|
||||||
_canAdd = _unit canAddItemToUniform _classname;
|
_canAdd = [_unit, _classname, 1, true, false, false] call CBA_fnc_canAddItem;
|
||||||
};
|
};
|
||||||
default {
|
default {
|
||||||
_canAdd = _unit canAdd _classname;
|
_canAdd = [_unit, _classname] call CBA_fnc_canAddItem;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ if (!alive _vehicle || {locked _vehicle > 1}) exitWith {false};
|
|||||||
|
|
||||||
private ["_selectionPosition", "_selectionPosition2"];
|
private ["_selectionPosition", "_selectionPosition2"];
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
private _turret = [];
|
private _turret = [];
|
||||||
|
|
||||||
private _radius = 0;
|
private _radius = 0;
|
||||||
|
@ -110,7 +110,6 @@ private _settings = configProperties [configFile >> "ACE_Settings", "(isClass _x
|
|||||||
|
|
||||||
private _gvarName = _varName select [_addonSearchCount];
|
private _gvarName = _varName select [_addonSearchCount];
|
||||||
|
|
||||||
_output pushBack "";
|
|
||||||
_output pushBack format ["["];
|
_output pushBack format ["["];
|
||||||
_output pushBack format [" QGVAR(%1), ""%2"",", _gvarName, _cbaSettingType];
|
_output pushBack format [" QGVAR(%1), ""%2"",", _gvarName, _cbaSettingType];
|
||||||
_output pushBack format [" [LSTRING(), LSTRING()], // %1, %2", _localizedName, _localizedDescription]; //IGNORE_STRING_WARNING(str_ace_common_);
|
_output pushBack format [" [LSTRING(), LSTRING()], // %1, %2", _localizedName, _localizedDescription]; //IGNORE_STRING_WARNING(str_ace_common_);
|
||||||
@ -123,7 +122,8 @@ private _settings = configProperties [configFile >> "ACE_Settings", "(isClass _x
|
|||||||
_output pushBack format [" {[""%1"", _this] call ace_common_fnc_cbaSettings_settingChanged},", _varName];
|
_output pushBack format [" {[""%1"", _this] call ace_common_fnc_cbaSettings_settingChanged},", _varName];
|
||||||
};
|
};
|
||||||
_output pushBack format [" %1 // Needs mission restart", _warnIfChangedMidMission];
|
_output pushBack format [" %1 // Needs mission restart", _warnIfChangedMidMission];
|
||||||
_output pushBack "] call CBA_settings_fnc_init;";
|
_output pushBack "] call CBA_fnc_addSetting;";
|
||||||
|
_output pushBack "";
|
||||||
} forEach _settings;
|
} forEach _settings;
|
||||||
|
|
||||||
copyToClipboard (_output joinString endl);
|
copyToClipboard (_output joinString endl);
|
||||||
|
@ -98,8 +98,8 @@ private _code = compile format ['["%1", _this] call FUNC(cbaSettings_settingChan
|
|||||||
|
|
||||||
TRACE_2("setting",_cbaSettingType,_cbaValueInfo);
|
TRACE_2("setting",_cbaSettingType,_cbaValueInfo);
|
||||||
TRACE_4("",_isForced,_cbaIsGlobal,_category,_cbaValueInfo);
|
TRACE_4("",_isForced,_cbaIsGlobal,_category,_cbaValueInfo);
|
||||||
private _return = [_varName, _cbaSettingType, [_localizedName, _localizedDescription], _category, _cbaValueInfo, _cbaIsGlobal, _code, _warnIfChangedMidMission] call CBA_settings_fnc_init;
|
private _return = [_varName, _cbaSettingType, [_localizedName, _localizedDescription], _category, _cbaValueInfo, _cbaIsGlobal, _code, _warnIfChangedMidMission] call CBA_fnc_addSetting;
|
||||||
TRACE_1("returned",_return);
|
TRACE_1("returned",_return);
|
||||||
if ((isNil "_return") || {_return != 0}) then {ERROR_1("Setting [%1] - CBA Error",_varName);};
|
if ((isNil "_return") || {!_return}) then {ERROR_1("Setting [%1] - CBA Error",_varName);};
|
||||||
_return
|
_return
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ private _aceSettings = configProperties [configFile >> "ACE_Settings", "isClass
|
|||||||
|
|
||||||
if (!isNil "_profileVar") then {
|
if (!isNil "_profileVar") then {
|
||||||
private _currentValue = [_settingName, "client"] call CBA_settings_fnc_get;
|
private _currentValue = [_settingName, "client"] call CBA_settings_fnc_get;
|
||||||
if (_isClientSettable && {!(_currentValue isEqualTo _profileVar)}) then {
|
if (_isClientSettable && {_currentValue isNotEqualTo _profileVar}) then {
|
||||||
// CBA_settings_fnc_set will do type checking for the old profile var
|
// CBA_settings_fnc_set will do type checking for the old profile var
|
||||||
private _ret = [_settingName, _profileVar, 0, "client", true] call CBA_settings_fnc_set;
|
private _ret = [_settingName, _profileVar, 0, "client", true] call CBA_settings_fnc_set;
|
||||||
INFO_3("Transfering setting [%1: %2] returned %3", _settingName, _profileVar, _ret);
|
INFO_3("Transfering setting [%1: %2] returned %3", _settingName, _profileVar, _ret);
|
||||||
|
@ -57,7 +57,7 @@ private _oldCompats = [];
|
|||||||
};
|
};
|
||||||
false
|
false
|
||||||
} count _addons;
|
} count _addons;
|
||||||
if (!(_oldCompats isEqualTo [])) then {
|
if (_oldCompats isNotEqualTo []) then {
|
||||||
[{
|
[{
|
||||||
// Lasts for ~10 seconds
|
// Lasts for ~10 seconds
|
||||||
ERROR_WITH_TITLE_1("The following ACE compatiblity PBOs are outdated", "%1", _this);
|
ERROR_WITH_TITLE_1("The following ACE compatiblity PBOs are outdated", "%1", _this);
|
||||||
@ -138,7 +138,7 @@ if (isMultiplayer) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
_addons = _addons - GVAR(ServerAddons);
|
_addons = _addons - GVAR(ServerAddons);
|
||||||
if !(_addons isEqualTo []) then {
|
if (_addons isNotEqualTo []) then {
|
||||||
private _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons];
|
private _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons];
|
||||||
|
|
||||||
ERROR(_errorMsg);
|
ERROR(_errorMsg);
|
||||||
|
@ -30,7 +30,7 @@ _target setVariable [QGVAR(owner), _unit, true];
|
|||||||
|
|
||||||
// lock target object
|
// lock target object
|
||||||
if (_lockTarget) then {
|
if (_lockTarget) then {
|
||||||
private _canBeDisassembled = !([] isEqualTo getArray (_target call CBA_fnc_getObjectConfig >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
|
private _canBeDisassembled = ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
|
||||||
if (!isNull _unit) then {
|
if (!isNull _unit) then {
|
||||||
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
|
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
|
||||||
if (_canBeDisassembled) then {
|
if (_canBeDisassembled) then {
|
||||||
|
@ -36,7 +36,7 @@ _target setVariable [QGVAR(owner), _unit, true];
|
|||||||
|
|
||||||
// lock target object
|
// lock target object
|
||||||
if (_lockTarget) then {
|
if (_lockTarget) then {
|
||||||
private _canBeDisassembled = !([] isEqualTo getArray (_target call CBA_fnc_getObjectConfig >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
|
private _canBeDisassembled = ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
|
||||||
if (!isNull _unit) then {
|
if (!isNull _unit) then {
|
||||||
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
|
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
|
||||||
if (_canBeDisassembled) then {
|
if (_canBeDisassembled) then {
|
||||||
|
@ -78,7 +78,7 @@ while {_rangeToCheck < _maxDistance} do {
|
|||||||
//Shoot a ray down, and make sure we hit something solid like a building or the ground:
|
//Shoot a ray down, and make sure we hit something solid like a building or the ground:
|
||||||
private _belowRoundArray = lineIntersectsSurfaces [(AGLtoASL _roundAGL) vectorAdd [0,0,0.5], (AGLtoASL _roundAGL) vectorAdd [0,0,-1]];
|
private _belowRoundArray = lineIntersectsSurfaces [(AGLtoASL _roundAGL) vectorAdd [0,0,0.5], (AGLtoASL _roundAGL) vectorAdd [0,0,-1]];
|
||||||
TRACE_4("Testing for solid",_roundDistance,_roundAngle,_roundAGL,_belowRoundArray);
|
TRACE_4("Testing for solid",_roundDistance,_roundAngle,_roundAGL,_belowRoundArray);
|
||||||
if (!(_belowRoundArray isEqualTo [])) then {
|
if (_belowRoundArray isNotEqualTo []) then {
|
||||||
private _aboveBuilding = (_belowRoundArray select 0) select 2;
|
private _aboveBuilding = (_belowRoundArray select 0) select 2;
|
||||||
//Point is above something: Terrain(null) or Building
|
//Point is above something: Terrain(null) or Building
|
||||||
if ((isNull _aboveBuilding) || {_aboveBuilding isKindOf "Building"}) then {
|
if ((isNull _aboveBuilding) || {_aboveBuilding isKindOf "Building"}) then {
|
||||||
@ -110,14 +110,14 @@ while {_rangeToCheck < _maxDistance} do {
|
|||||||
_testIntersections = [];
|
_testIntersections = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
if (!(_testIntersections isEqualTo [])) exitWith {
|
if (_testIntersections isNotEqualTo []) exitWith {
|
||||||
TRACE_2("collision low/high",_roundAGL,_testIntersections);
|
TRACE_2("collision low/high",_roundAGL,_testIntersections);
|
||||||
_roundPointIsValid = false;
|
_roundPointIsValid = false;
|
||||||
};
|
};
|
||||||
_point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.5];
|
_point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.5];
|
||||||
_point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, 1];
|
_point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, 1];
|
||||||
_testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
|
_testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
|
||||||
if (!(_testIntersections isEqualTo [])) exitWith {
|
if (_testIntersections isNotEqualTo []) exitWith {
|
||||||
TRACE_2("collision mid",_roundAGL,_testIntersections);
|
TRACE_2("collision mid",_roundAGL,_testIntersections);
|
||||||
_roundPointIsValid = false;
|
_roundPointIsValid = false;
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
if (!local _this) exitWith {};
|
if (!local _this) exitWith {};
|
||||||
|
|
||||||
// Objects with disabled simulation and objects with simulation type "house" don't have gravity/physics, so make sure they are not floating
|
// Objects with disabled simulation and objects with simulation type "house" don't have gravity/physics, so make sure they are not floating
|
||||||
private _hasGravity = simulationEnabled _this && {getText (configFile >> "CfgVehicles" >> typeOf _this >> "simulation") != "house"};
|
private _hasGravity = simulationEnabled _this && {getText (configOf _this >> "simulation") != "house"};
|
||||||
|
|
||||||
if (!_hasGravity) then {
|
if (!_hasGravity) then {
|
||||||
private _positionASL = getPosASL _this;
|
private _positionASL = getPosASL _this;
|
||||||
|
@ -23,7 +23,7 @@ private _vehicle = vehicle _unit;
|
|||||||
if (_vehicle isEqualTo _unit) exitWith {""};
|
if (_vehicle isEqualTo _unit) exitWith {""};
|
||||||
|
|
||||||
// --- driver
|
// --- driver
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
|
|
||||||
if (_unit == driver _vehicle) exitWith {
|
if (_unit == driver _vehicle) exitWith {
|
||||||
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getText (_config >> "driverAction")) // return
|
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getText (_config >> "driverAction")) // return
|
||||||
@ -32,7 +32,7 @@ if (_unit == driver _vehicle) exitWith {
|
|||||||
// --- turret
|
// --- turret
|
||||||
private _turret = _unit call CBA_fnc_turretPath;
|
private _turret = _unit call CBA_fnc_turretPath;
|
||||||
|
|
||||||
if !(_turret isEqualTo []) exitWith {
|
if (_turret isNotEqualTo []) exitWith {
|
||||||
private _turretConfig = [_vehicle, _turret] call CBA_fnc_getTurret;
|
private _turretConfig = [_vehicle, _turret] call CBA_fnc_getTurret;
|
||||||
|
|
||||||
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getText (_turretConfig >> "gunnerAction")) // return
|
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getText (_turretConfig >> "gunnerAction")) // return
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
private _turret = _vehicle call FUNC(getTurretCommander);
|
private _turret = _vehicle call FUNC(getTurretCommander);
|
||||||
|
|
||||||
[_config, _turret] call FUNC(getTurretConfigPath) // return
|
[_config, _turret] call FUNC(getTurretConfigPath) // return
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
private _turret = _vehicle call FUNC(getTurretGunner);
|
private _turret = _vehicle call FUNC(getTurretGunner);
|
||||||
|
|
||||||
[_config, _turret] call FUNC(getTurretConfigPath) // return
|
[_config, _turret] call FUNC(getTurretConfigPath) // return
|
||||||
|
@ -19,7 +19,7 @@ params ["_varName"];
|
|||||||
|
|
||||||
private _variableDefinition = _varName call FUNC(getDefinedVariableInfo);
|
private _variableDefinition = _varName call FUNC(getDefinedVariableInfo);
|
||||||
|
|
||||||
if !(_variableDefinition isEqualTo []) exitWith {
|
if (_variableDefinition isNotEqualTo []) exitWith {
|
||||||
_variableDefinition select 1;
|
_variableDefinition select 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ private _turrets = allTurrets [_vehicle, true];
|
|||||||
private _doorTurrets = [];
|
private _doorTurrets = [];
|
||||||
|
|
||||||
{
|
{
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
|
|
||||||
_config = [_config, _x] call FUNC(getTurretConfigPath);
|
_config = [_config, _x] call FUNC(getTurretConfigPath);
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ _position = toLower _position;
|
|||||||
// general
|
// general
|
||||||
if (!alive _vehicle || {locked _vehicle > 1}) exitWith {false};
|
if (!alive _vehicle || {locked _vehicle > 1}) exitWith {false};
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
private _turret = [];
|
private _turret = [];
|
||||||
|
|
||||||
private _isInside = vehicle _unit == _vehicle;
|
private _isInside = vehicle _unit == _vehicle;
|
||||||
@ -206,7 +206,7 @@ switch (_position) do {
|
|||||||
// this will execute all config based event handlers. Not script based ones unfortunately, but atleast we don't use any.
|
// this will execute all config based event handlers. Not script based ones unfortunately, but atleast we don't use any.
|
||||||
private _fnc_getInEH = {
|
private _fnc_getInEH = {
|
||||||
// config based getIn EHs are assigned to the soldier, not the vehicle. Why Bis? Why?
|
// config based getIn EHs are assigned to the soldier, not the vehicle. Why Bis? Why?
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _unit >> "EventHandlers";
|
private _config = configOf _unit >> "EventHandlers";
|
||||||
|
|
||||||
if (isClass _config) then {
|
if (isClass _config) then {
|
||||||
//getIn is local effects with global arguments. It doesn't trigger if the unit was already inside and only switched seats
|
//getIn is local effects with global arguments. It doesn't trigger if the unit was already inside and only switched seats
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
params ["_vehicle", "_light"];
|
params ["_vehicle", "_light"];
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> _light;
|
private _config = configOf _vehicle >> "Reflectors" >> _light;
|
||||||
|
|
||||||
private _intensity = getNumber (_config >> "intensity");
|
private _intensity = getNumber (_config >> "intensity");
|
||||||
private _position = getText (_config >> "position");
|
private _position = getText (_config >> "position");
|
||||||
|
@ -26,7 +26,7 @@ private _lat = -1 * getNumber (configFile >> "CfgWorlds" >> _map >> "latitude");
|
|||||||
private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset");
|
private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset");
|
||||||
|
|
||||||
private _mapData = _map call FUNC(getMapData);
|
private _mapData = _map call FUNC(getMapData);
|
||||||
if (!(_mapData isEqualTo [])) then {
|
if (_mapData isNotEqualTo []) then {
|
||||||
_lat = _mapData select 0;
|
_lat = _mapData select 0;
|
||||||
_altitude = _mapData select 1;
|
_altitude = _mapData select 1;
|
||||||
};
|
};
|
||||||
|
@ -23,9 +23,9 @@ private _side = side _leader;
|
|||||||
|
|
||||||
if (_vehicle == _leader) exitWith {
|
if (_vehicle == _leader) exitWith {
|
||||||
if (
|
if (
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _leader >> "detectSkill") > 20 ||
|
getNumber (configOf _leader >> "detectSkill") > 20 ||
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _leader >> "camouflage") < 1 ||
|
getNumber (configOf _leader >> "camouflage") < 1 ||
|
||||||
getText (configFile >> "CfgVehicles" >> typeOf _leader >> "textsingular") == "diver"
|
getText (configOf _leader >> "textsingular") == "diver"
|
||||||
) then {
|
) then {
|
||||||
["n_recon", "b_recon", "o_recon"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_recon", "b_recon", "o_recon"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
} else {
|
} else {
|
||||||
@ -33,16 +33,16 @@ if (_vehicle == _leader) exitWith {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1) exitWith {
|
if (getNumber (configOf _vehicle >> "attendant") == 1) exitWith {
|
||||||
["n_med", "b_med", "o_med"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_med", "b_med", "o_med"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (
|
if (
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "transportRepair") > 0 ||
|
getNumber (configOf _vehicle >> "transportRepair") > 0 ||
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "transportFuel") > 0 ||
|
getNumber (configOf _vehicle >> "transportFuel") > 0 ||
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "transportAmmo") > 0 ||
|
getNumber (configOf _vehicle >> "transportAmmo") > 0 ||
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "ACE_canRepair") > 0 ||
|
getNumber (configOf _vehicle >> "ACE_canRepair") > 0 ||
|
||||||
getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "ACE_fuelCapacityCargo") > 0
|
getNumber (configOf _vehicle >> "ACE_fuelCapacityCargo") > 0
|
||||||
) exitWith {
|
) exitWith {
|
||||||
["n_maint", "b_maint", "o_maint"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_maint", "b_maint", "o_maint"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
};
|
};
|
||||||
@ -59,7 +59,7 @@ if (_vehicle isKindOf "StaticMortar") exitWith {
|
|||||||
["n_mortar", "b_mortar", "o_mortar"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_mortar", "b_mortar", "o_mortar"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "artilleryScanner") == 1) exitWith {
|
if (getNumber (configOf _vehicle >> "artilleryScanner") == 1) exitWith {
|
||||||
["n_art", "b_art", "o_art"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_art", "b_art", "o_art"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ if (_vehicle isKindOf "Car") exitWith {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (_vehicle isKindOf "Tank") exitWith {
|
if (_vehicle isKindOf "Tank") exitWith {
|
||||||
if (getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "transportSoldier") > 0) then {
|
if (getNumber (configOf _vehicle >> "transportSoldier") > 0) then {
|
||||||
["n_mech_inf", "b_mech_inf", "o_mech_inf"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_mech_inf", "b_mech_inf", "o_mech_inf"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
} else {
|
} else {
|
||||||
["n_armor", "b_armor", "o_armor"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
["n_armor", "b_armor", "o_armor"] select ((["GUER", "WEST", "EAST"] find str _side) max 0)
|
||||||
|
@ -27,7 +27,7 @@ if (_unit isKindOf "CAManBase") then {
|
|||||||
if (_showEffective) then {
|
if (_showEffective) then {
|
||||||
_name = [effectiveCommander _unit, false, _useRaw] call FUNC(getName);
|
_name = [effectiveCommander _unit, false, _useRaw] call FUNC(getName);
|
||||||
} else {
|
} else {
|
||||||
_name = getText (configFile >> "CfgVehicles" >> typeOf _unit >> "displayName");
|
_name = getText (configOf _unit >> "displayName");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Finds turret owner of a pylon.
|
* Returns the turret path that owns the given pylon.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Vehicle <OBJECT>
|
* 0: Vehicle <OBJECT>
|
||||||
* 1: Pylon Index (starting at 0) <NUMBER>
|
* 1: Pylon Index (starting at 0) <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* * Turret index (either [-1] or [0]) <ARRAY>
|
* Turret Path (either [-1] or [0]) <ARRAY>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [cursorObject, 0] call ace_common_fnc_getPylonTurret
|
* [cursorObject, 0] call ace_common_fnc_getPylonTurret
|
||||||
@ -18,46 +18,4 @@
|
|||||||
|
|
||||||
params ["_vehicle", "_pylonIndex"];
|
params ["_vehicle", "_pylonIndex"];
|
||||||
|
|
||||||
// See if index is in ace_pylonTurrets setVar on vehicle
|
getAllPylonsInfo _vehicle param [_pylonIndex, []] param [2, [-1]]
|
||||||
private _pylonTurrets = _vehicle getVariable ["ace_pylonTurrets", []];
|
|
||||||
private _returnValue = _pylonTurrets param [_pylonIndex, []];
|
|
||||||
|
|
||||||
if (!(_returnValue isEqualTo [])) then {
|
|
||||||
TRACE_1("Using ace_pylonTurrets value",_returnValue);
|
|
||||||
} else {
|
|
||||||
// Attempt to determine turret owner based on magazines in the vehicle
|
|
||||||
private _pyMags = getPylonMagazines _vehicle;
|
|
||||||
private _pylonConfigs = configProperties [configFile >> "CfgVehicles" >> typeOf _vehicle >> "Components" >> "TransportPylonsComponent" >> "Pylons", "isClass _x"];
|
|
||||||
if (_pylonIndex >= (count _pyMags)) exitWith {ERROR("out of bounds");};
|
|
||||||
if (_pylonIndex >= (count _pylonConfigs)) exitWith {ERROR("out of bounds");};
|
|
||||||
|
|
||||||
private _targetMag = _pyMags select _pylonIndex;
|
|
||||||
private _inPilot = _targetMag in (_vehicle magazinesTurret [-1]);
|
|
||||||
private _inGunner = _targetMag in (_vehicle magazinesTurret [0]);
|
|
||||||
|
|
||||||
if (_inPilot) then {
|
|
||||||
if (_inGunner) then {
|
|
||||||
TRACE_3("ambiguous - in both",_targetMag,_inPilot,_inGunner);
|
|
||||||
} else {
|
|
||||||
TRACE_3("Pilot Mag",_targetMag,_inPilot,_inGunner);
|
|
||||||
_returnValue = [-1];
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
if (_inGunner) then {
|
|
||||||
TRACE_3("Gunner Mag",_targetMag,_inPilot,_inGunner);
|
|
||||||
_returnValue = [0];
|
|
||||||
} else {
|
|
||||||
TRACE_3("ambiguous - in neither",_targetMag,_inPilot,_inGunner);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_returnValue isEqualTo []) then { // If not sure, just use config value
|
|
||||||
_returnValue = getArray ((_pylonConfigs select _pylonIndex) >> "turret");
|
|
||||||
if (_returnValue isEqualTo []) then {
|
|
||||||
_returnValue = [-1];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
TRACE_3("",_vehicle,_pylonIndex,_returnValue);
|
|
||||||
_returnValue
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
|
|
||||||
private _hitpoints = [];
|
private _hitpoints = [];
|
||||||
private _selections = [];
|
private _selections = [];
|
||||||
|
@ -17,4 +17,4 @@
|
|||||||
|
|
||||||
params [["_vehicle", objNull, [objNull]]];
|
params [["_vehicle", objNull, [objNull]]];
|
||||||
|
|
||||||
crew _vehicle select {getText (configFile >> "CfgVehicles" >> typeOf _x >> "simulation") == "UAVPilot"} // return
|
crew _vehicle select {getText (configOf _x >> "simulation") == "UAVPilot"} // return
|
||||||
|
@ -21,7 +21,7 @@ private _vehicle = vehicle _unit;
|
|||||||
|
|
||||||
if (_unit == _vehicle) exitWith {false};
|
if (_unit == _vehicle) exitWith {false};
|
||||||
|
|
||||||
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
private _config = configOf _vehicle;
|
||||||
|
|
||||||
if (getNumber (_config >> "hideProxyInCombat") != 1) exitWith {false};
|
if (getNumber (_config >> "hideProxyInCombat") != 1) exitWith {false};
|
||||||
|
|
||||||
|
@ -17,6 +17,6 @@
|
|||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
private _isMedic = _unit getVariable [QEGVAR(medical,medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _unit >> "attendant")];
|
private _isMedic = _unit getVariable [QEGVAR(medical,medicClass), getNumber (configOf _unit >> "attendant")];
|
||||||
|
|
||||||
_isMedic > 0
|
_isMedic > 0
|
||||||
|
@ -82,7 +82,7 @@ if (_lightSource isKindOf "CAManBase") then {
|
|||||||
if (isCollisionLightOn _lightSource) then {
|
if (isCollisionLightOn _lightSource) then {
|
||||||
private _markerLights = [
|
private _markerLights = [
|
||||||
_lightSource,
|
_lightSource,
|
||||||
{configProperties [configFile >> "CfgVehicles" >> typeOf _this >> "MarkerLights", "isClass _x", true]},
|
{configProperties [configOf _this >> "MarkerLights", "isClass _x", true]},
|
||||||
uiNamespace,
|
uiNamespace,
|
||||||
format [QEGVAR(cache,MarkerLights_%1), typeOf _lightSource],
|
format [QEGVAR(cache,MarkerLights_%1), typeOf _lightSource],
|
||||||
1E11
|
1E11
|
||||||
|
@ -21,11 +21,30 @@ params ["_unit", "_vehicle", ["_caller", objNull]];
|
|||||||
TRACE_3("loadPersonLocal",_unit,_vehicle,_caller);
|
TRACE_3("loadPersonLocal",_unit,_vehicle,_caller);
|
||||||
|
|
||||||
private _slotsOpen = false;
|
private _slotsOpen = false;
|
||||||
if ((_vehicle emptyPositions "cargo" > 0) && {!(_unit getVariable ['ACE_isUnconscious', false])} || {(getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "ejectDeadCargo")) == 0}) then {
|
if ((_vehicle emptyPositions "cargo" > 0) && {!(_unit getVariable ['ACE_isUnconscious', false]) || {(getNumber (configOf _vehicle >> "ejectDeadCargo")) == 0}}) then {
|
||||||
_unit moveInCargo _vehicle;
|
_unit moveInCargo _vehicle;
|
||||||
|
TRACE_1("moveInCargo",_vehicle);
|
||||||
_slotsOpen = true;
|
_slotsOpen = true;
|
||||||
} else {
|
} else {
|
||||||
if (_vehicle emptyPositions "gunner" > 0) then {
|
// Check if an empty turret is available
|
||||||
|
// This already excludes FFV seats, which count as cargo positions
|
||||||
|
private _turrets = fullCrew [_vehicle, "turret", true];
|
||||||
|
private _index = _turrets findIf {isNull (_x#0)};
|
||||||
|
if (_index >= 0) exitWith {
|
||||||
|
_unit moveInTurret [_vehicle, _turrets#_index#3];
|
||||||
|
TRACE_2("moveInTurret",_vehicle,_turrets#_index#3);
|
||||||
|
_slotsOpen = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Check if the commander seat is available
|
||||||
|
if (_vehicle emptyPositions "commander" > 0) exitWith {
|
||||||
|
_unit moveInCommander _vehicle;
|
||||||
|
TRACE_1("moveInCommander",_vehicle);
|
||||||
|
_slotsOpen = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Lastly, check if the gunner seat is available
|
||||||
|
if (_vehicle emptyPositions "gunner" > 0) exitWith {
|
||||||
_unit moveInGunner _vehicle;
|
_unit moveInGunner _vehicle;
|
||||||
_slotsOpen = true;
|
_slotsOpen = true;
|
||||||
};
|
};
|
||||||
|
@ -24,7 +24,7 @@ if (isNil QGVAR(LSD_Vehicles)) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
_hSCount = count (getArray (configFile >> "CfgVehicles" >> typeOf _x >> "hiddenSelections"));
|
_hSCount = count (getArray (configOf _x >> "hiddenSelections"));
|
||||||
if (_hSCount > 0) then {
|
if (_hSCount > 0) then {
|
||||||
GVAR(LSD_Vehicles) pushBack [_x, _hSCount];
|
GVAR(LSD_Vehicles) pushBack [_x, _hSCount];
|
||||||
};
|
};
|
||||||
|
@ -5,22 +5,29 @@
|
|||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: Distance <NUMBER>
|
* 1: Distance <NUMBER><OPTIONAL>
|
||||||
|
* 2: Restriceted to cargo only <BOOL><OPTIONAL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nearest vehicles with a free seat <ARRAY>
|
* Nearest vehicles with a free seat <ARRAY>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [bob] call ace_common_fnc_nearestVehiclesFreeSeat
|
* [cursorObject] call ace_common_fnc_nearestVehiclesFreeSeat
|
||||||
*
|
*
|
||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_unit", ["_distance", 10]];
|
params ["_unit", ["_distance", 10], ["_cargoOnly", false]];
|
||||||
|
|
||||||
private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F", "Pod_Heli_Transport_04_crewed_base_F"], _distance];
|
private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F", "Pod_Heli_Transport_04_crewed_base_F"], _distance];
|
||||||
_nearVehicles select {
|
_nearVehicles select {
|
||||||
// Filter cargo seats that will eject unconscious units (e.g. quad bike)
|
// Filter cargo seats that will eject unconscious units (e.g. quad bike)
|
||||||
((_x emptyPositions "cargo" > 0) && {!(_unit getVariable ['ACE_isUnconscious', false])} || {(getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "ejectDeadCargo")) == 0})
|
private _canSitInCargo = (!(_unit getVariable ['ACE_isUnconscious', false])) || {(getNumber (configOf _x >> "ejectDeadCargo")) == 0};
|
||||||
|| {_x emptyPositions "gunner" > 0}
|
((fullCrew [_x, "", true]) findIf {
|
||||||
|
_x params ["_body", "_role", "_cargoIndex"];
|
||||||
|
(isNull _body) // seat empty
|
||||||
|
&& {_role != "DRIVER"} // not driver seat
|
||||||
|
&& {_canSitInCargo || {_cargoIndex == -1}} // won't be ejected (uncon)
|
||||||
|
&& {(!_cargoOnly) || {_cargoIndex != -1}} // not restricted (captive)
|
||||||
|
}) > -1
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ private _fnc_replaceItems = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Replace all items of current class in list
|
// Replace all items of current class in list
|
||||||
if !(_replacements isEqualTo []) then {
|
if (_replacements isNotEqualTo []) then {
|
||||||
TRACE_3("replace",_item,_count,_replacements);
|
TRACE_3("replace",_item,_count,_replacements);
|
||||||
_unit removeItems _item;
|
_unit removeItems _item;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ INFO_1("ace_common_fnc_runTests starting for [%1]", _specificTest);
|
|||||||
private _testFile = getText _x;
|
private _testFile = getText _x;
|
||||||
diag_log text format ["----- Starting Testing %1 [%2] -----", _testName, _testFile];
|
diag_log text format ["----- Starting Testing %1 [%2] -----", _testName, _testFile];
|
||||||
private _return = ([nil] apply (compile preProcessFileLineNumbers _testFile)) select 0;
|
private _return = ([nil] apply (compile preProcessFileLineNumbers _testFile)) select 0;
|
||||||
if ((isNil "_return") || {!(_return isEqualTo true)}) then {
|
if ((isNil "_return") || {_return isNotEqualTo true}) then {
|
||||||
systemChat format ["Test [%1] Failed", _testName];
|
systemChat format ["Test [%1] Failed", _testName];
|
||||||
diag_log text format ["----- Finished Testing %1 [Failed] -----", _testName];
|
diag_log text format ["----- Finished Testing %1 [Failed] -----", _testName];
|
||||||
_fails pushBack _testName;
|
_fails pushBack _testName;
|
||||||
@ -43,6 +43,6 @@ INFO_1("ace_common_fnc_runTests starting for [%1]", _specificTest);
|
|||||||
|
|
||||||
INFO_1("ace_common_fnc_runTests finished in %1 ms", (1000 * (diag_tickTime - _startTime)) toFixed 1);
|
INFO_1("ace_common_fnc_runTests finished in %1 ms", (1000 * (diag_tickTime - _startTime)) toFixed 1);
|
||||||
INFO_2("[%1 / %2] Tests Passed", (_total - (count _fails)), _total);
|
INFO_2("[%1 / %2] Tests Passed", (_total - (count _fails)), _total);
|
||||||
if (!(_fails isEqualTo [])) then {
|
if (_fails isNotEqualTo []) then {
|
||||||
INFO_1("Failed: %1", _fails);
|
INFO_1("Failed: %1", _fails);
|
||||||
};
|
};
|
||||||
|
@ -46,7 +46,7 @@ TRACE_2("Starting Embargo", _varName, _delay);
|
|||||||
TRACE_4("End of embargo", _object, _varName, _value, _curValue);
|
TRACE_4("End of embargo", _object, _varName, _value, _curValue);
|
||||||
|
|
||||||
//If value at start of embargo doesn't equal current, then broadcast and start new embargo
|
//If value at start of embargo doesn't equal current, then broadcast and start new embargo
|
||||||
if (!(_value isEqualTo _curValue)) then {
|
if (_value isNotEqualTo _curValue) then {
|
||||||
_this set [2, _curValue];
|
_this set [2, _curValue];
|
||||||
_this call FUNC(setVariablePublic);
|
_this call FUNC(setVariablePublic);
|
||||||
};
|
};
|
||||||
|
@ -27,7 +27,7 @@ GVAR(statusEffect_Names) pushBack _name;
|
|||||||
GVAR(statusEffect_isGlobal) pushBack _isGlobal;
|
GVAR(statusEffect_isGlobal) pushBack _isGlobal;
|
||||||
|
|
||||||
//We add reasons at any time, but more efficenet to add all common ones at one time during init
|
//We add reasons at any time, but more efficenet to add all common ones at one time during init
|
||||||
if (isServer && {!(_commonReasonsArray isEqualTo [])}) then {
|
if (isServer && {_commonReasonsArray isNotEqualTo []}) then {
|
||||||
//Switch case to lower:
|
//Switch case to lower:
|
||||||
_commonReasonsArray = _commonReasonsArray apply { toLower _x };
|
_commonReasonsArray = _commonReasonsArray apply { toLower _x };
|
||||||
missionNamespace setVariable [(format [QGVAR(statusEffects_%1), _name]), _commonReasonsArray, true];
|
missionNamespace setVariable [(format [QGVAR(statusEffects_%1), _name]), _commonReasonsArray, true];
|
||||||
|
@ -49,6 +49,16 @@ unassignVehicle _unit;
|
|||||||
TRACE_1("Ejecting", alive _unit);
|
TRACE_1("Ejecting", alive _unit);
|
||||||
_unit action ["Eject", vehicle _unit];
|
_unit action ["Eject", vehicle _unit];
|
||||||
|
|
||||||
|
// Failsafe - sometimes eject alone doesn't work, but moveOut does
|
||||||
|
[{
|
||||||
|
params ["_unit"];
|
||||||
|
|
||||||
|
if (vehicle _unit != _unit) then {
|
||||||
|
WARNING_1("UnloadPersonLocal [%1] did not eject normally",_unit);
|
||||||
|
moveOut _unit;
|
||||||
|
};
|
||||||
|
}, [_unit], 1] call CBA_fnc_waitAndExecute;
|
||||||
|
|
||||||
[{
|
[{
|
||||||
params ["_unit", "_emptyPos"];
|
params ["_unit", "_emptyPos"];
|
||||||
(alive _unit) && {(vehicle _unit) != _unit}
|
(alive _unit) && {(vehicle _unit) != _unit}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
LINKFUNC(switchPersistentLaser)
|
LINKFUNC(switchPersistentLaser)
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(allowFadeMusic),
|
QGVAR(allowFadeMusic),
|
||||||
@ -15,4 +15,4 @@
|
|||||||
localize LSTRING(ACEKeybindCategoryCommon),
|
localize LSTRING(ACEKeybindCategoryCommon),
|
||||||
true,
|
true,
|
||||||
true
|
true
|
||||||
] call CBA_settings_fnc_init;
|
] call CBA_fnc_addSetting;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user