mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into 40mmBrass
This commit is contained in:
commit
4b30e095bf
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -23,14 +23,14 @@ All good? Then proceed and fill out the items below.
|
||||
**Mods (complete and add to the following information):**
|
||||
- **Arma 3:** `x.xx` [e.g. 1.00 stable, rc, dev]
|
||||
- **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` [e.g. 3.0.0 stable, commit hash]
|
||||
<!-- Make sure to reproduce the issue with only CBA and ACE3 on a newly created mission! -->
|
||||
|
||||
**Description:**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Steps to reproduce:**
|
||||
_Follow [https://ace3.acemod.org/img/wiki/user/issue_flowchart.webp](this flowchart)!_
|
||||
_Follow [this flowchart](https://ace3.acemod.org/img/wiki/user/issue_flowchart.webp)!_
|
||||
|
||||
1. _Go to ..._
|
||||
2. _Click ..._
|
||||
|
10
.github/release-drafter.yml
vendored
10
.github/release-drafter.yml
vendored
@ -11,11 +11,10 @@ sort-direction: ascending
|
||||
categories:
|
||||
- title: '**ADDED:**'
|
||||
labels:
|
||||
- 'kind/feature request'
|
||||
- 'kind/added feature'
|
||||
- 'kind/feature'
|
||||
- title: '**FIXED:**'
|
||||
labels:
|
||||
- 'kind/bug fix'
|
||||
- 'kind/bug-fix'
|
||||
- title: '**IMPROVED:**'
|
||||
labels:
|
||||
- 'kind/enhancement'
|
||||
@ -23,17 +22,16 @@ categories:
|
||||
- title: '**CHANGED:**'
|
||||
labels:
|
||||
- 'kind/cleanup'
|
||||
- 'area/compatibility'
|
||||
- 'kind/change'
|
||||
- title: '**SETTINGS:**'
|
||||
labels:
|
||||
- 'kind/setting'
|
||||
- title: '**TRANSLATIONS:**'
|
||||
labels:
|
||||
- 'area/translations'
|
||||
- 'kind/translation'
|
||||
|
||||
exclude-labels:
|
||||
- 'ignore changelog'
|
||||
- 'ignore-changelog'
|
||||
- 'dependencies'
|
||||
|
||||
change-template: '- $TITLE (#$NUMBER)'
|
||||
|
@ -28,7 +28,7 @@ exclude = [
|
||||
"zeus/functions/fnc_zeusAttributes.sqf",
|
||||
]
|
||||
|
||||
[hemtt.launch]
|
||||
[hemtt.launch.default]
|
||||
workshop = [
|
||||
"450814997", # CBA_A3
|
||||
]
|
||||
|
@ -1,7 +1,5 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
#include "initKeybinds.inc.sqf"
|
||||
|
||||
GVAR(currentbulletID) = -1;
|
||||
|
||||
GVAR(Protractor) = false;
|
||||
@ -11,6 +9,8 @@ GVAR(currentGrid) = 0;
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
#include "initKeybinds.inc.sqf"
|
||||
|
||||
["CBA_settingsInitialized", {
|
||||
//If not enabled, dont't add PFEH
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
@ -19,11 +19,11 @@ if (!hasInterface) exitWith {};
|
||||
[] call FUNC(initializeTerrainExtension);
|
||||
|
||||
// Register fire event handler
|
||||
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
["ace_firedPlayer", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
["ace_firedPlayerNonLocal", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
|
||||
// Register Perframe Handler
|
||||
[FUNC(handleFirePFH), GVAR(simulationInterval)] call CBA_fnc_addPerFrameHandler;
|
||||
[LINKFUNC(handleFirePFH), GVAR(simulationInterval)] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
//Add warnings for missing compat PBOs (only if AB is on)
|
||||
{
|
||||
|
@ -44,6 +44,9 @@ if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then {
|
||||
_dragModel = 1;
|
||||
};
|
||||
private _ballisticCoefficients = getArray(_ammoConfig >> "ACE_ballisticCoefficients");
|
||||
if (_ballisticCoefficients isEqualTo []) then {
|
||||
_ballisticCoefficients = [0.5];
|
||||
};
|
||||
private _velocityBoundaries = getArray(_ammoConfig >> "ACE_velocityBoundaries");
|
||||
private _atmosphereModel = getText(_ammoConfig >> "ACE_standardAtmosphere");
|
||||
if (_atmosphereModel isEqualTo "") then {
|
||||
|
@ -2,6 +2,14 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
// recheck weapon inertia after weapon swap, change of attachments or switching unit
|
||||
["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["loadout", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["unit", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
["CBA_settingsInitialized", {
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
["baseline", {
|
||||
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
|
||||
switch (stance ACE_player) do {
|
||||
@ -17,28 +25,6 @@ if (!hasInterface) exitWith {};
|
||||
};
|
||||
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
|
||||
|
||||
["multiplier", {
|
||||
switch (true) do {
|
||||
case (isWeaponRested ACE_player): {
|
||||
GVAR(swayFactor) * GVAR(restedSwayFactor)
|
||||
};
|
||||
case (isWeaponDeployed ACE_player): {
|
||||
GVAR(swayFactor) * GVAR(deployedSwayFactor)
|
||||
};
|
||||
default {
|
||||
GVAR(swayFactor)
|
||||
};
|
||||
};
|
||||
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
|
||||
|
||||
// recheck weapon inertia after weapon swap, change of attachments or switching unit
|
||||
["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["loadout", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["unit", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
["CBA_settingsInitialized", {
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
// - Post process effect ------------------------------------------------------
|
||||
GVAR(ppeBlackout) = ppEffectCreate ["ColorCorrections", 4220];
|
||||
GVAR(ppeBlackout) ppEffectEnable true;
|
||||
|
@ -80,30 +80,3 @@
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(swayFactor),
|
||||
"SLIDER",
|
||||
[LSTRING(SwayFactor), LSTRING(SwayFactor_Description)],
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(restedSwayFactor),
|
||||
"SLIDER",
|
||||
[LSTRING(RestedSwayFactor), LSTRING(RestedSwayFactor_Description)],
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 2],
|
||||
true
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(deployedSwayFactor),
|
||||
"SLIDER",
|
||||
[LSTRING(DeployedSwayFactor), LSTRING(DeployedSwayFactor_Description)],
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 2],
|
||||
true
|
||||
] call CBA_fnc_addSetting;
|
||||
|
@ -44,7 +44,7 @@
|
||||
<Italian>Influenza la prestazione generale di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore.</Italian>
|
||||
<Chinese>影響所有玩家的體力表現,值越高代表體力越好</Chinese>
|
||||
<Chinesesimp>影响所有玩家的体力表现,值越高代表体力越好</Chinesesimp>
|
||||
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение.</Russian>
|
||||
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение. Чем выше, тем лучше.</Russian>
|
||||
<Portuguese>Influencia na performance geral de todos os jogadores sem nenhum fator personalizado. Quanto maior, melhor.</Portuguese>
|
||||
<Czech>Ovlivňuje celkový výkon všech hráčů bez vlastního faktoru. Vyšší znamená lépe.</Czech>
|
||||
</Key>
|
||||
@ -59,7 +59,7 @@
|
||||
<Italian>Influenza la prestazione personalizzata di questa unità. Maggiore significa migliore.</Italian>
|
||||
<Chinese>影響這個單位的體力表現,值越高代表體力越好</Chinese>
|
||||
<Chinesesimp>影响这个单位的体力表现,值越高代表体力越好</Chinesesimp>
|
||||
<Russian>Влияет на общую производительность юнита.</Russian>
|
||||
<Russian>Влияет на общую производительность юнита.Чем выше, тем лучше.</Russian>
|
||||
<Portuguese>Influencia na performance geral dessa unidade. Quanto maior, melhor.</Portuguese>
|
||||
<Czech>Ovlivňuje celkový výkon této jednotky. Vyšší znamená lépe.</Czech>
|
||||
</Key>
|
||||
@ -154,76 +154,6 @@
|
||||
<Portuguese>Define o quanto que um terreno íngrime aumenta na perda de estamina. Quanto maior, maior a perda de estamina.</Portuguese>
|
||||
<Czech>Nastavuje, o kolik strmý terén zvyšuje ztrátu výdrže. Vyšší znamená vyšší ztrátu výdrže.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor">
|
||||
<English>Sway factor</English>
|
||||
<Spanish>Factor de balanceo de mira</Spanish>
|
||||
<German>Verwacklungsfaktor</German>
|
||||
<Japanese>手ぶれ因数</Japanese>
|
||||
<Chinesesimp>抖动系数</Chinesesimp>
|
||||
<Chinese>抖動因素</Chinese>
|
||||
<French>Facteur de tremblement</French>
|
||||
<Italian>Fattore di Oscillazione</Italian>
|
||||
<Polish>Czynnik kołysania</Polish>
|
||||
<Russian>Фактор колебания прицела</Russian>
|
||||
<Portuguese>Fator de Balanço de Mira</Portuguese>
|
||||
<Czech>Faktor kývání</Czech>
|
||||
<Korean>손떨림 정도</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway. Higher means more sway.</English>
|
||||
<Spanish>Afecta al la estabilidad de la mira. Más alto significa más balanceo</Spanish>
|
||||
<German>Beeinflusst, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung.</German>
|
||||
<Japanese>武器の手ぶれの量に影響します。値が高いほど、手ぶれが強くなります。</Japanese>
|
||||
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害。</Chinesesimp>
|
||||
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
|
||||
<French>Influe sur l'amplitude du tremblement de l'arme. Une valeur plus élevée signifie plus de tremblement.</French>
|
||||
<Italian>Influenza l'aumento di oscillazione dell'arma quando affaticato. Maggiore significa più oscillazione.</Italian>
|
||||
<Polish>Wpływa na poziom kołysania broni. Większa ilość znaczy większe kołysanie.</Polish>
|
||||
<Russian>Влияет на колебания прицела оружия. Чем выше - тем больше.</Russian>
|
||||
<Portuguese>Influencia a quantidade de balanço da mira da arma. Quanto maior, mais balanço.</Portuguese>
|
||||
<Czech>Ovlivňuje množství kývání zbraní. Vyšší znamená více kývání.</Czech>
|
||||
<Korean>손떨림의 정도를 정합니다. 높을 수록 많이 휘적입니다.</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RestedSwayFactor">
|
||||
<English>Rested sway factor</English>
|
||||
<French>Facteur de balancement au repos</French>
|
||||
<Korean>휴식 시 손떨림 정도</Korean>
|
||||
<Portuguese>Fator de balanço de mira em repouso</Portuguese>
|
||||
<German>Verwacklungsfaktor, wenn aufgelegt</German>
|
||||
<Italian>Fattore di Oscillazione Appoggiato</Italian>
|
||||
<Japanese>静止時の手ぶれ係数</Japanese>
|
||||
<Russian>Коэффициент колебания в состоянии покоя</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RestedSwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway while weapon is rested.</English>
|
||||
<French>Influence le degré de balancement de l'arme au repos.</French>
|
||||
<Korean>무기가 아무런 행동도 하지 않는 동안 무기가 흔들리는 정도를 정합니다.</Korean>
|
||||
<Portuguese>Influencia a quantidade de balanço de mira enquanto a arma está em repouso.</Portuguese>
|
||||
<German>Beeinflusst, wie ruhig man die Waffe hält, während sie aufgelegt ist.</German>
|
||||
<Italian>Determina la quantità di oscillazione dell'arma quando questa è appoggiata.</Italian>
|
||||
<Japanese>静止している時の武器の手ぶれの量に影響します。</Japanese>
|
||||
<Russian>Влияет на величину колебания оружия в состоянии покоя.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_DeployedSwayFactor">
|
||||
<English>Deployed sway factor</English>
|
||||
<French>Facteur de balancement déployé</French>
|
||||
<Korean>거치 시 손떨림 정도</Korean>
|
||||
<Portuguese>Fator de balanço de mira em posição de tiro</Portuguese>
|
||||
<German>Verwacklungsfaktor, wenn Zweibein aufgestellt ist.</German>
|
||||
<Italian>Fattore di Oscillazione su Bipode</Italian>
|
||||
<Japanese>展開時の手ぶれ係数</Japanese>
|
||||
<Russian>Коэффициент колебания при развертывании</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_DeployedSwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway while weapon is deployed.</English>
|
||||
<French>Influence le degré de balancement de l'arme déployée.</French>
|
||||
<Korean>무기를 거치하는 동안 무기를 흔드는 정도를 정합니다.</Korean>
|
||||
<Portuguese>Influencia a quantidade de balanço de mira enquanto a arma está em posição de tiro.</Portuguese>
|
||||
<German>Beeinflusst, wie ruhig man die Waffen hält, während das Zweibein aufgestellt ist.</German>
|
||||
<Italian>Determina la quantità di oscillazione dell'arma quando questa è stabilizzata usando il bipode.</Italian>
|
||||
<Japanese>武器の展開(Cキー)時の武器の手ぶれの量に影響します。</Japanese>
|
||||
<Russian>Влияет на величину колебания оружия при его развертывании.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
<Spanish>Activada</Spanish>
|
||||
@ -250,7 +180,7 @@
|
||||
<Italian>Abilita/Disabilita la Fatica Avanzata.</Italian>
|
||||
<Chinese>啟用/關閉進階體力.</Chinese>
|
||||
<Chinesesimp>启用/关闭进阶体力。</Chinesesimp>
|
||||
<Russian>Включает / Отключает Продвинутую усталость</Russian>
|
||||
<Russian>Включает/отключает Продвинутую усталость</Russian>
|
||||
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
|
||||
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
|
||||
</Key>
|
||||
|
@ -2,20 +2,22 @@
|
||||
|
||||
// Fired XEH
|
||||
GVAR(ammoEventHandlers) = createHashMap;
|
||||
[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(throwFiredXEH), LINKFUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
|
||||
|
||||
// Exit on HC
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
// Temporary Wind Info indication
|
||||
GVAR(tempWindInfo) = false;
|
||||
|
||||
// Ammo/Magazines look-up hash for correctness of initSpeed
|
||||
GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
||||
{
|
||||
{
|
||||
private _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo");
|
||||
if (_ammo != "") then { GVAR(ammoMagLookup) setVariable [_ammo, _x]; };
|
||||
} count (getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"));
|
||||
nil
|
||||
} count getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles");
|
||||
} forEach (getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"));
|
||||
} forEach getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles");
|
||||
|
||||
|
||||
// Add keybinds
|
||||
|
@ -19,7 +19,7 @@ params ["_unit"];
|
||||
|
||||
if !(_unit getVariable [QGVAR(inHand), false]) exitWith {false};
|
||||
|
||||
if (vehicle _unit != _unit) exitWith {
|
||||
if (!isNull objectParent _unit) exitWith {
|
||||
private _startPos = eyePos _unit;
|
||||
private _aimLinePos = AGLToASL (positionCameraToWorld [0, 0, 1]);
|
||||
private _intersections = lineIntersectsSurfaces [_startPos, _aimLinePos, _unit, objNull, false];
|
||||
|
@ -53,6 +53,12 @@ _unit setVariable [QGVAR(dropDistance), DROP_DISTANCE_DEFAULT];
|
||||
// Remove controls hint (check if ever enabled is inside the function)
|
||||
call EFUNC(interaction,hideMouseHint);
|
||||
|
||||
// Hide wind info after throw, if it was temporarily enabled for the throw
|
||||
if (GVAR(tempWindInfo)) then {
|
||||
EGVAR(weather,WindInfo) = false;
|
||||
GVAR(tempWindInfo) = false;
|
||||
};
|
||||
|
||||
// Remove throw action
|
||||
[_unit, "DefaultAction", _unit getVariable [QGVAR(throwAction), -1]] call EFUNC(common,removeActionEventHandler);
|
||||
|
||||
|
@ -35,6 +35,11 @@ if (isNull (_unit getVariable [QGVAR(activeThrowable), objNull]) && {(currentThr
|
||||
TRACE_1("no throwables",_unit);
|
||||
};
|
||||
|
||||
// Temporarily enable wind info, to aid in throwing smoke grenades effectively
|
||||
if (GVAR(enableTempWindInfo) && {!(missionNamespace getVariable [QEGVAR(weather,WindInfo), false])}) then {
|
||||
[] call EFUNC(weather,displayWindInfo);
|
||||
GVAR(tempWindInfo) = true;
|
||||
};
|
||||
|
||||
_unit setVariable [QGVAR(inHand), true];
|
||||
|
||||
|
@ -44,8 +44,7 @@
|
||||
_addedPickUpHelpers pushBack _pickUpHelper;
|
||||
_throwablesHelped pushBack _x;
|
||||
};
|
||||
nil
|
||||
} count _nearThrowables;
|
||||
} forEach _nearThrowables;
|
||||
|
||||
_args set [0, getPosASL ACE_player];
|
||||
_args set [3, _nearThrowables];
|
||||
@ -56,11 +55,10 @@
|
||||
{
|
||||
// Only handling with attachTo works nicely
|
||||
_x attachTo [_x getVariable [QGVAR(throwable), objNull], [0, 0, 0]];
|
||||
nil
|
||||
} count _addedPickUpHelpers;
|
||||
} forEach _addedPickUpHelpers;
|
||||
} else {
|
||||
TRACE_1("Cleaning Pick Up Helpers",count _addedPickUpHelpers);
|
||||
{deleteVehicle _x} count _addedPickUpHelpers;
|
||||
{deleteVehicle _x} forEach _addedPickUpHelpers;
|
||||
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
}, 0, [(getPosASL ACE_player) vectorAdd [-100, 0, 0], [], [], []]] call CBA_fnc_addPerFrameHandler;
|
||||
|
@ -45,7 +45,7 @@ if (!(_unit getVariable [QGVAR(primed), false])) then {
|
||||
private _newVelocity = (_p1 vectorFromTo _p2) vectorMultiply _velocity;
|
||||
|
||||
// Adjust for throwing from inside vehicles, where we have a vehicle-based velocity that can't be compensated for by a human
|
||||
if (vehicle _unit != _unit) then {
|
||||
if (!isNull objectParent _unit) then {
|
||||
_newVelocity = _newVelocity vectorAdd (velocity (vehicle _unit));
|
||||
};
|
||||
|
||||
|
@ -40,3 +40,11 @@ private _category = format ["ACE %1", localize LSTRING(Category)];
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(enableTempWindInfo), "CHECKBOX",
|
||||
[LSTRING(EnableTempWindInfo_DisplayName), LSTRING(EnableTempWindInfo_Description)],
|
||||
_category,
|
||||
true,
|
||||
0
|
||||
] call CBA_fnc_addSetting;
|
||||
|
@ -185,6 +185,26 @@
|
||||
<Portuguese>Permite que arremessáveis fixados em objetos sejam pegos.</Portuguese>
|
||||
<Czech>Zapíná schopnost zvednutí předmětů z objektů ke kterým jsou připnuté.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnableTempWindInfo_DisplayName">
|
||||
<English>Show Temporary Wind Info</English>
|
||||
<German>Zeige temporäre Windinformationen</German>
|
||||
<Italian>Mostra informazioni sul vento temporaneamente</Italian>
|
||||
<Japanese>一時的に風の情報を表示</Japanese>
|
||||
<Korean>바람 정보 임시로 표시</Korean>
|
||||
<French>Afficher temporairement les informations sur le vent</French>
|
||||
<Russian>Временно показать информацию о ветре</Russian>
|
||||
<Spanish>Mostrar información del viento temporalmente</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnableTempWindInfo_Description">
|
||||
<English>Temporarily display Wind Info while throwing, to aid in placing smoke grenades effectively.</English>
|
||||
<German>Zeige während des werfens Windinformationen an, um Rauchgranaten effektiver zu platzieren.</German>
|
||||
<Italian>Mostra le informazioni sul vento durante il lancio di granate, facilitando il piazzamento ottimale di fumogeni.</Italian>
|
||||
<Japanese>投擲行動中に風向きの情報を一時的に表示し、発煙手榴弾の煙幕を効果的に展開しやすくします。</Japanese>
|
||||
<Korean>연막탄을 효과적으로 배치하는 데 도움이 되도록 투척하는 동안 일시적으로 바람 정보를 표시합니다.</Korean>
|
||||
<French>Affiche les informations sur le vent pendant le lancement pour placer les grenades fumigènes plus efficacement.</French>
|
||||
<Russian>Временно отображайте информацию о ветре во время броска, чтобы помочь эффективно разместить дымовые шашки.</Russian>
|
||||
<Spanish>Mostrar información del viento temporalmente mientras se lanza, para ayudar a lanzar las granadas de humo de forma efectiva.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
||||
<English>Prepare/Change Throwable</English>
|
||||
<Spanish>Preparar/Cambiar objetos lanzables</Spanish>
|
||||
|
@ -16,7 +16,7 @@
|
||||
} forEach _sections;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(unGarrison), FUNC(unGarrison)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(unGarrison), LINKFUNC(unGarrison)] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(doMove), {
|
||||
params ["_unitsArray"];
|
||||
@ -73,6 +73,6 @@
|
||||
if (isServer) then {
|
||||
["CAManBase", "init", {
|
||||
// wait for HMD to be assigned so `hmd _unit` works
|
||||
[FUNC(assignNVG), _this, 1] call CBA_fnc_waitAndExecute;
|
||||
[LINKFUNC(assignNVG), _this, 1] call CBA_fnc_waitAndExecute;
|
||||
}] call CBA_fnc_addClassEventHandler;
|
||||
};
|
||||
|
@ -33,7 +33,7 @@ if (_startingPos isEqualTo [0,0,0]) exitWith {
|
||||
[LSTRING(GarrisonInvalidPosition)] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
|
||||
if (count _unitsArray == 0 || {isNull (_unitsArray select 0)}) exitWith {
|
||||
if (_unitsArray isEqualTo [] || {isNull (_unitsArray select 0)}) exitWith {
|
||||
TRACE_1("fnc_garrison: Units error",_unitsArray);
|
||||
[LSTRING(GarrisonNoUnits)] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
@ -43,7 +43,7 @@ if (_fillingRadius >= 50) then {
|
||||
_buildings = [_buildings] call CBA_fnc_shuffle;
|
||||
};
|
||||
|
||||
if (count _buildings == 0) exitWith {
|
||||
if (_buildings isEqualTo []) exitWith {
|
||||
TRACE_1("fnc_garrison: Building error",_buildings);
|
||||
[LSTRING(GarrisonNoBuilding)] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
|
@ -91,6 +91,7 @@
|
||||
<Portuguese>Equipar NVGs automaticamente</Portuguese>
|
||||
<Japanese>暗視装置の自動装備</Japanese>
|
||||
<Russian>Автоматическое оснащение ПНВ</Russian>
|
||||
<Spanish>Auto equipar gafas de visión nocturna</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_AI_AssignNVG_Description">
|
||||
<English>Equips NVG in inventory during night time and unequips it during day time.\nDoes not add NVGs to inventory!</English>
|
||||
@ -101,7 +102,8 @@
|
||||
<French>Equipe des JVN pendant la nuit et les déséquipe le jour.\nN'ajoute pas les JVN dans l'intenvaire !</French>
|
||||
<Portuguese>Equipa o NVG do inventário durante a noite e desequipa durante o dia.\nNão adiciona NVGs ao inventário!</Portuguese>
|
||||
<Japanese>インベントリ内の暗視装置を夜間に装備し、日中は解除し収納します。\nこれはNVGをインベントリに追加しません。</Japanese>
|
||||
<Russian>Оснащает ПНВ в инвентаре в ночное время и отключает его в дневное время.\nНе добавляет ПНВ в инвентарь!</Russian>
|
||||
<Russian>Экипирует ПНВ в ночное время и отключает его в дневное время.\nНе добавляет ПНВ в инвентарь!</Russian>
|
||||
<Spanish>Equipa las gafas de visión nocturna en el inventario cuando es de noche, y las desequipa cuando es de día.\nNo añade las gafas al inventario!</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -30,6 +30,6 @@ _vehicle == vehicle _unit
|
||||
if (_unit == _x select FULLCREW_UNIT) exitWith {
|
||||
_ejectVarName = format [QGVAR(ejectAction_%1_%2), _x select FULLCREW_ROLE, _x select FULLCREW_TURRETPATH];
|
||||
};
|
||||
} count fullCrew _vehicle;
|
||||
} forEach fullCrew _vehicle;
|
||||
_vehicle getVariable [_ejectVarName, false]
|
||||
}
|
||||
|
@ -123,7 +123,9 @@ class GVAR(stats) {
|
||||
stats[] = {"maximumLoad"};
|
||||
displayName = "$STR_a3_rscdisplayarsenal_stat_load";
|
||||
showBar = 1;
|
||||
showText = 1;
|
||||
barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
|
||||
textStatement = QUOTE(call FUNC(statTextStatement_load));
|
||||
tabs[] = {{3,4,5}, {}};
|
||||
};
|
||||
class ACE_smokeChemTTL: statBase {
|
||||
|
@ -98,6 +98,7 @@ PREP(statBarStatement_rateOfFIre);
|
||||
PREP(statTextStatement_accuracy);
|
||||
PREP(statTextStatement_explosionTime);
|
||||
PREP(statTextStatement_illuminators);
|
||||
PREP(statTextStatement_load);
|
||||
PREP(statTextStatement_magCount);
|
||||
PREP(statTextStatement_mass);
|
||||
PREP(statTextStatement_rateOfFire);
|
||||
|
@ -66,7 +66,8 @@ _items = _items select {
|
||||
_x isKindOf ["CBA_MiscItem", _cfgWeapons] && {getNumber (_configItemInfo >> "type") in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD]} ||
|
||||
{getNumber (_configItemInfo >> "type") in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} ||
|
||||
{getText (_cfgWeapons >> _x >> "simulation") == "ItemMineDetector"} ||
|
||||
{getNumber (_cfgMagazines >> _x >> "ACE_isUnique") == 1}
|
||||
{getNumber (_cfgMagazines >> _x >> "ACE_isUnique") == 1} ||
|
||||
{getNumber (_cfgMagazines >> _x >> "ACE_asItem") == 1}
|
||||
};
|
||||
|
||||
GVAR(customRightPanelButtons) set [_position, [_items apply {_x call EFUNC(common,getConfigName)}, _picture, _tooltip, _moveOnOverwrite]];
|
||||
|
@ -26,6 +26,14 @@ private _cfgWeapons = configfile >> "CfgWeapons";
|
||||
private _config = _cfgWeapons >> _item;
|
||||
_item = configName _config;
|
||||
|
||||
// If the switch config entries are inherited, ignore
|
||||
if (
|
||||
(inheritsFrom (_config >> "MRT_SwitchItemNextClass") isNotEqualTo _config) ||
|
||||
{inheritsFrom (_config >> "MRT_SwitchItemPrevClass") isNotEqualTo _config}
|
||||
) exitWith {
|
||||
_item // return
|
||||
};
|
||||
|
||||
while {
|
||||
_config = _cfgWeapons >> getText (_config >> "MRT_SwitchItemNextClass");
|
||||
isClass _config && {_switchableClasses pushBackUnique configName _config != -1}
|
||||
|
@ -78,10 +78,10 @@ if (!isNull curatorCamera) then {
|
||||
|
||||
// Make face and voice selection JIP compatible; 3DEN doesn't need this though
|
||||
if (isMultiplayer && {!is3DEN}) then {
|
||||
private _id = [QGVAR(broadcastFace), [GVAR(center), GVAR(currentFace)], QGVAR(centerFace_) + netId GVAR(center)] call CBA_fnc_globalEventJIP;
|
||||
private _id = [QGVAR(broadcastFace), [GVAR(center), GVAR(currentFace)], QGVAR(centerFace_) + hashValue GVAR(center)] call CBA_fnc_globalEventJIP;
|
||||
[_id, GVAR(center)] call CBA_fnc_removeGlobalEventJIP;
|
||||
|
||||
_id = [QGVAR(broadcastVoice), [GVAR(center), GVAR(currentVoice)], QGVAR(centerVoice_) + netId GVAR(center)] call CBA_fnc_globalEventJIP;
|
||||
_id = [QGVAR(broadcastVoice), [GVAR(center), GVAR(currentVoice)], QGVAR(centerVoice_) + hashValue GVAR(center)] call CBA_fnc_globalEventJIP;
|
||||
[_id, GVAR(center)] call CBA_fnc_removeGlobalEventJIP;
|
||||
};
|
||||
|
||||
|
@ -69,7 +69,14 @@ switch (_currentItemsIndex) do {
|
||||
// Secondary weapon
|
||||
case IDX_CURR_SECONDARY_WEAPON_ITEMS: {
|
||||
private _currentItemInSlot = (GVAR(currentItems) select IDX_CURR_SECONDARY_WEAPON_ITEMS) select _itemIndex;
|
||||
private _isDisposable = CBA_disposable_replaceDisposableLauncher && {!isNil {CBA_disposable_loadedLaunchers getVariable (secondaryWeapon GVAR(center))}};
|
||||
private _isDisposable = CBA_disposable_replaceDisposableLauncher && {!isNil "CBA_disposable_loadedLaunchers"} &&
|
||||
{
|
||||
if (CBA_disposable_loadedLaunchers isEqualType createHashMap) then { // after CBA 3.18
|
||||
(secondaryWeapon GVAR(center)) in CBA_disposable_loadedLaunchers
|
||||
} else {
|
||||
!isNil {CBA_disposable_loadedLaunchers getVariable (secondaryWeapon player)}
|
||||
}
|
||||
};
|
||||
|
||||
// If removal
|
||||
if (_item == "") then {
|
||||
|
@ -160,7 +160,7 @@ private _magazineMiscItems = createHashMap;
|
||||
|
||||
{
|
||||
_magazineMiscItems set [configName _x, nil];
|
||||
} forEach ((toString {getNumber (_x >> "ACE_isUnique") == 1}) configClasses _cfgMagazines);
|
||||
} forEach ((toString {getNumber (_x >> "ACE_isUnique") == 1 || getNumber (_x >> "ACE_asItem") == 1}) configClasses _cfgMagazines);
|
||||
|
||||
// Remove invalid/non-existent entries
|
||||
_grenadeList deleteAt "";
|
||||
|
@ -244,7 +244,7 @@ _for do {
|
||||
|
||||
// Sort alphabetically, find the previously selected item and select it again
|
||||
if (_right) then {
|
||||
[_panel, 1] lnbSortBy ["TEXT", _sortDirection == ASCENDING, false, true, false];
|
||||
[_panel, 1] lnbSortBy ["TEXT", _sortDirection == ASCENDING, false, true, true]; // do not support unicode, as it's much more performance intensive (~3x more)
|
||||
|
||||
_for do {
|
||||
// Remove sorting text, as it blocks the item name otherwise
|
||||
@ -258,7 +258,7 @@ if (_right) then {
|
||||
};
|
||||
};
|
||||
} else {
|
||||
_panel lbSortBy ["TEXT", _sortDirection == ASCENDING, false, true, false];
|
||||
_panel lbSortBy ["TEXT", _sortDirection == ASCENDING, false, true, true]; // do not support unicode, as it's much more performance intensive (~3x more)
|
||||
|
||||
_for do {
|
||||
_item = _panel lbData _i;
|
||||
|
26
addons/arsenal/functions/fnc_statTextStatement_load.sqf
Normal file
26
addons/arsenal/functions/fnc_statTextStatement_load.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Text statement for the load stat.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Stats <ARRAY>
|
||||
* 1: Item config path <CONFIG>
|
||||
*
|
||||
* Return Value:
|
||||
* Stat Text <STRING>
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_stats", "_config"];
|
||||
TRACE_2("statTextStatement_load",_stats,_config);
|
||||
|
||||
if (!isNull (_config >> "ItemInfo" >> "containerClass")) then { // Uniform/Vest
|
||||
_config = configfile >> "CfgVehicles" >> getText (_config >> "ItemInfo" >> "containerClass");
|
||||
};
|
||||
|
||||
private _load = getNumber (_config >> (_stats # 0));
|
||||
|
||||
if (_load <= 0) exitWith { LELSTRING(common,none) };
|
||||
format ["%1kg (%2lb)", (_load * 0.1 * (1 / 2.2046)) toFixed 2, (_load * 0.1) toFixed 2]
|
@ -22,6 +22,10 @@ private _extendedInfo = createHashMap;
|
||||
// Check if the provided loadout is a CBA extended loadout
|
||||
if (count _loadout == 2) then {
|
||||
_extendedInfo = +(_loadout select 1); // Copy the hashmap to prevent events from modifiyng the profileNamespace extendedInfo
|
||||
if (_extendedInfo isEqualType []) then { // Hashmaps are serialized as arrays, convert back to hashmap
|
||||
_extendedInfo = createHashMapFromArray _extendedInfo;
|
||||
_loadout set [1, _extendedInfo]; // Also fix source variable, technically not needed but doesn't hurt
|
||||
};
|
||||
_loadout = _loadout select 0;
|
||||
};
|
||||
|
||||
|
@ -1191,7 +1191,7 @@
|
||||
<Chinesesimp>支持夜视仪</Chinesesimp>
|
||||
<Czech>Podpora nočního vidění</Czech>
|
||||
<Turkish>Gece Görüş Desteği</Turkish>
|
||||
<Korean>야간투시 지원여부</Korean>
|
||||
<Korean>야간투시 지원</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_supPrim">
|
||||
<English>Primary supported</English>
|
||||
@ -1206,7 +1206,7 @@
|
||||
<Chinese>主武器支援</Chinese>
|
||||
<Chinesesimp>主镜支持</Chinesesimp>
|
||||
<Czech>Hlavní část hledí podporuje</Czech>
|
||||
<Korean>주무기 지원여부</Korean>
|
||||
<Korean>주무기 지원</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_supSec">
|
||||
<English>Secondary supported</English>
|
||||
@ -1221,7 +1221,7 @@
|
||||
<Chinese>次要武器支援</Chinese>
|
||||
<Chinesesimp>副镜支持</Chinesesimp>
|
||||
<Czech>Vedlejší část hledí podporuje</Czech>
|
||||
<Korean>보조무기 지원여부</Korean>
|
||||
<Korean>보조무기 지원</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrim">
|
||||
<English>Primary integrated</English>
|
||||
@ -1236,17 +1236,25 @@
|
||||
<Chinese>整合主武器</Chinese>
|
||||
<Chinesesimp>主镜内置</Chinesesimp>
|
||||
<Czech>Integrováno do hlavní části hledí</Czech>
|
||||
<Korean>주무기 내장여부</Korean>
|
||||
<Korean>주무기 내장</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_ti">
|
||||
<English>Thermal integrated</English>
|
||||
<Italian>Termico integrato</Italian>
|
||||
<Japanese>熱画像装置内蔵</Japanese>
|
||||
<Russian>Интегрирован в тепловизор.</Russian>
|
||||
<Russian>Интегрирован тепловизор.</Russian>
|
||||
<Korean>열화상 내장</Korean>
|
||||
<French>Thermique intégrée</French>
|
||||
<Spanish>Térmica integrada</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrimTi">
|
||||
<English>Thermal & Primary integrated</English>
|
||||
<Italian>Termico e Primario integrato</Italian>
|
||||
<Japanese>熱画像装置内蔵・プライマリに内蔵</Japanese>
|
||||
<Russian>Интегрирован в тепловизор и осн.прицел.</Russian>
|
||||
<Russian>Интегрирован тепловизор и осн.прицел.</Russian>
|
||||
<Korean>열화상과 주무기 내장</Korean>
|
||||
<French>Thermique et primaire intégrés</French>
|
||||
<Spanish>Térmica y Primaria integrada</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_NoSup">
|
||||
<English>Not Supported</English>
|
||||
@ -1603,6 +1611,7 @@
|
||||
<French>Décroissant</French>
|
||||
<Portuguese>Decrescente</Portuguese>
|
||||
<Russian>Нисходящий</Russian>
|
||||
<Spanish>Descendiente</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortAscending">
|
||||
<English>Ascending</English>
|
||||
@ -1614,6 +1623,7 @@
|
||||
<French>Croissant</French>
|
||||
<Portuguese>Crescente</Portuguese>
|
||||
<Russian>Восходящий</Russian>
|
||||
<Spanish>Ascendiente</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_toolsTab">
|
||||
<English>Tools</English>
|
||||
@ -1641,6 +1651,7 @@
|
||||
<French>Nombre de munitions</French>
|
||||
<Portuguese>Quantidade de munição</Portuguese>
|
||||
<Russian>Количество боеприпасов</Russian>
|
||||
<Spanish>Cantidad de munición</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statIlluminators">
|
||||
<English>Illuminators</English>
|
||||
@ -1651,6 +1662,7 @@
|
||||
<Portuguese>Iluminadores</Portuguese>
|
||||
<Japanese>イルミネーター</Japanese>
|
||||
<Russian>Осветители</Russian>
|
||||
<Spanish>Iluminadores</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_defaultToFavoritesSetting">
|
||||
<English>Default to Favorites</English>
|
||||
@ -1662,6 +1674,7 @@
|
||||
<French>Favoris par défaut</French>
|
||||
<Portuguese>Favoritos por padrão</Portuguese>
|
||||
<Russian>По умолчанию - Избранное</Russian>
|
||||
<Spanish>Favoritos por defecto</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_defaultToFavoritesTooltip">
|
||||
<English>Controls whether the ACE Arsenal defaults to showing all items or favorites.</English>
|
||||
@ -1673,6 +1686,7 @@
|
||||
<French>Contrôle si l'arsenal ACE affiche par défaut tous les éléments ou les favoris.</French>
|
||||
<Portuguese>Controla se o Arsenal ACE exibe por padrão todos os itens ou favoritos.</Portuguese>
|
||||
<Russian>Определяет, будет ли в арсенале ACE по умолчанию отображаться все предметы или избранное.</Russian>
|
||||
<Spanish>Controla si el Arsenal de ACE muestra por defecto todos los objetos o sólo los favoritos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_favoritesColorSetting">
|
||||
<English>Favorites Color</English>
|
||||
@ -1684,6 +1698,7 @@
|
||||
<French>Couleurs favorites</French>
|
||||
<Portuguese>Cor dos favoritos</Portuguese>
|
||||
<Russian>Избранный цвет</Russian>
|
||||
<Spanish>Color de Favoritos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_favoritesColorTooltip">
|
||||
<English>Highlight color for favorited items.</English>
|
||||
@ -1695,6 +1710,7 @@
|
||||
<French>Met en surbrillance les éléments favoris.</French>
|
||||
<Portuguese>Cor de destaque para itens favoritados.</Portuguese>
|
||||
<Russian>Выделите цветом любимые предметы.</Russian>
|
||||
<Spanish>Color de marcado para los objetos favoritos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonFavoritesTooltip">
|
||||
<English>Switch between displaying all items or your favorites.\nDouble click while holding Shift to add or remove an item.</English>
|
||||
@ -1706,6 +1722,7 @@
|
||||
<French>Change entre l'affichage de tous les éléments ou de vos favoris.\nDouble-cliquez en maintenant la touche Maj enfoncée pour ajouter ou supprimer un élément.</French>
|
||||
<Portuguese>Alterna entre a exibição de todos os itens ou seus favoritos.\nClique duas vezes enquanto mantém pressionada a tecla Shift para adicionar ou remover um item.</Portuguese>
|
||||
<Russian>Переключайтесь между отображением всех элементов или ваших избранных.\nДважды щелкните, удерживая Shift, чтобы добавить или удалить элемент.</Russian>
|
||||
<Spanish>Alterna entre mostrar todos los objetos o sólo los favoritos.\nDoble click mientras se pulsa Shift para añadir o quitar un objeto.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSearchTooltip">
|
||||
<English>Search\nCTRL + Click to enable live results</English>
|
||||
@ -1714,6 +1731,8 @@
|
||||
<Japanese>検索\nCTRL + クリックで検索結果の即時表示を有効化</Japanese>
|
||||
<Korean>검색\nCtrl + 클릭으로 실시간 검색 결과를 활성화</Korean>
|
||||
<Russian>Поиск\nCtrl + Click для включения результатов в реальном времени</Russian>
|
||||
<French>Recherche\nCTRL + clic pour modifier les résultats tout en écrivant</French>
|
||||
<Spanish>Buscar\nCTRL + Click habilita los objetos en directo</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,8 +1,10 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
#include "initKeybinds.inc.sqf"
|
||||
|
||||
GVAR(active) = false;
|
||||
GVAR(initialised) = false;
|
||||
|
||||
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;
|
||||
[QEGVAR(vector,rangefinderData), LINKFUNC(sord)] call CBA_fnc_addEventHandler;
|
||||
|
@ -3540,6 +3540,7 @@
|
||||
<French>Utilisation de l'IA</French>
|
||||
<Portuguese>Utilização por IA</Portuguese>
|
||||
<Russian>Использование ИИ</Russian>
|
||||
<Spanish>Uso de la IA</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_illumination">
|
||||
<English>Illum</English>
|
||||
@ -3551,6 +3552,7 @@
|
||||
<French>Fusées éclairantes</French>
|
||||
<Portuguese>Sinalizadoras</Portuguese>
|
||||
<Russian>Осветители</Russian>
|
||||
<Spanish>Iluminación</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_concealment">
|
||||
<English>Smoke</English>
|
||||
@ -3562,6 +3564,7 @@
|
||||
<French>Fumigènes</French>
|
||||
<Portuguese>Fumígenas</Portuguese>
|
||||
<Russian>Дым</Russian>
|
||||
<Spanish>Humo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_infantry">
|
||||
<English>Inf</English>
|
||||
@ -3573,6 +3576,7 @@
|
||||
<French>Infanterie</French>
|
||||
<Portuguese>Infantaria</Portuguese>
|
||||
<Russian>Пехота</Russian>
|
||||
<Spanish>Infantería</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_lightVehicle">
|
||||
<English>Veh</English>
|
||||
@ -3584,6 +3588,7 @@
|
||||
<French>Véhicule</French>
|
||||
<Portuguese>Veículo</Portuguese>
|
||||
<Russian>Техника</Russian>
|
||||
<Spanish>Vehículo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_armor">
|
||||
<English>Armor</English>
|
||||
@ -3595,6 +3600,7 @@
|
||||
<French>Blindage</French>
|
||||
<Portuguese>Blindagem</Portuguese>
|
||||
<Russian>Бронетехника</Russian>
|
||||
<Spanish>Blindados</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_ammoUsageShort_aircraft">
|
||||
<English>Air</English>
|
||||
@ -3606,6 +3612,7 @@
|
||||
<French>Aviation</French>
|
||||
<Portuguese>Aeronaves</Portuguese>
|
||||
<Russian>Авиация</Russian>
|
||||
<Spanish>Aeronaves</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -25,14 +25,14 @@ if (isServer) then {
|
||||
};
|
||||
|
||||
["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
|
||||
[QGVAR(moveInCaptive), FUNC(vehicleCaptiveMoveIn)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(moveOutCaptive), FUNC(vehicleCaptiveMoveOut)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(moveInCaptive), LINKFUNC(vehicleCaptiveMoveIn)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(moveOutCaptive), LINKFUNC(vehicleCaptiveMoveOut)] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(setHandcuffed), FUNC(setHandcuffed)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(setSurrendered), FUNC(setSurrendered)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(setHandcuffed), LINKFUNC(setHandcuffed)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(setSurrendered), LINKFUNC(setSurrendered)] call CBA_fnc_addEventHandler;
|
||||
|
||||
//Medical Integration Events
|
||||
["ace_unconscious", FUNC(handleOnUnconscious)] call CBA_fnc_addEventHandler;
|
||||
["ace_unconscious", LINKFUNC(handleOnUnconscious)] call CBA_fnc_addEventHandler;
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
|
@ -27,7 +27,7 @@ if (_isUnconc) then {
|
||||
};
|
||||
} else {
|
||||
//Woke up: if handcuffed, goto animation
|
||||
if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then {
|
||||
if (_unit getVariable [QGVAR(isHandcuffed), false] && {isNull objectParent _unit}) then {
|
||||
[_unit] call EFUNC(common,fixLoweredRifleAnimation);
|
||||
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
@ -146,6 +146,7 @@
|
||||
<Korean>포로 눈 가리기</Korean>
|
||||
<Japanese>目隠しをする</Japanese>
|
||||
<Russian>Завязать глаза пленному</Russian>
|
||||
<Spanish>Vendar ojos al prisionero</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_RemoveBlindfoldCaptive">
|
||||
<English>Remove blindfold</English>
|
||||
@ -156,6 +157,7 @@
|
||||
<Korean>눈가리개 풀기</Korean>
|
||||
<Japanese>目隠しを外す</Japanese>
|
||||
<Russian>Снять повязку с глаз</Russian>
|
||||
<Spanish>Quitar vendas de los ojos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_CableTie">
|
||||
<English>Cable Tie</English>
|
||||
@ -486,7 +488,7 @@
|
||||
<Chinesesimp>设置在光标下的单位成俘虏状态。</Chinesesimp>
|
||||
<Korean>커서의 병력을 포박합니다.</Korean>
|
||||
<Polish>Ustawia jednostkę pod kursorem jako jeniec.</Polish>
|
||||
<Russian>Арестовывает указанный курсором юнит</Russian>
|
||||
<Russian>Арестовывает указанный курсором юнит.</Russian>
|
||||
<Portuguese>Torna a unidade sob o cursor um prisioneiro</Portuguese>
|
||||
<French>Capture l'unité sous le curseur.</French>
|
||||
<Czech>Nastaví jednotku pod kurzorem jako zajatce.</Czech>
|
||||
|
@ -48,15 +48,7 @@ class CfgVehicles {
|
||||
class Car: LandVehicle {
|
||||
GVAR(space) = 4;
|
||||
GVAR(hasCargo) = 1;
|
||||
class ACE_Cargo {
|
||||
/*
|
||||
class Cargo {
|
||||
class ACE_medicalSupplyCrate {
|
||||
type = "ACE_medicalSupplyCrate";
|
||||
amount = 1;
|
||||
};
|
||||
};*/
|
||||
};
|
||||
class ADDON {};
|
||||
};
|
||||
|
||||
class Tank: LandVehicle {
|
||||
@ -75,7 +67,7 @@ class CfgVehicles {
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
// HEMTTs - Default at 10, some variants are altered based on model size and/or expected level of free space inside.
|
||||
// HEMTTs - Default at 30, some variants are altered based on model size and/or expected level of free space inside.
|
||||
class Truck_01_base_F: Truck_F {
|
||||
GVAR(space) = 30;
|
||||
};
|
||||
@ -510,7 +502,7 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
GVAR(space) = 2;
|
||||
GVAR(hasCargo) = 2;
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(size) = 3;
|
||||
GVAR(canLoad) = 1;
|
||||
|
||||
@ -523,8 +515,9 @@ class CfgVehicles {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(space) = 3;
|
||||
GVAR(hasCargo) = 3;
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(size) = 3;
|
||||
GVAR(canLoad) = 1;
|
||||
|
||||
|
@ -86,7 +86,7 @@ GVAR(vehicleAction) = [
|
||||
GVAR(enable) &&
|
||||
{alive _target} &&
|
||||
{locked _target < 2} &&
|
||||
{(_target getVariable [QGVAR(hasCargo), getNumber (configOf _target >> QGVAR(hasCargo)) == 1])} &&
|
||||
{_target getVariable [QGVAR(hasCargo), getNumber (configOf _target >> QGVAR(hasCargo)) == 1]} &&
|
||||
{[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} &&
|
||||
{[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew)} &&
|
||||
{([_player, _target] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}
|
||||
|
@ -7,9 +7,10 @@
|
||||
* 0: Item to be loaded <STRING> or <OBJECT>
|
||||
* 1: Holder object (vehicle) <OBJECT>
|
||||
* 2: Amount <NUMBER> (default: 1)
|
||||
* 3: Ignore interaction distance and stability checks <BOOL> (default: false)
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
* Objects loaded <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* ["ACE_Wheel", cursorObject] call ace_cargo_fnc_addCargoItem
|
||||
@ -17,21 +18,29 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_item", "_vehicle", ["_amount", 1]];
|
||||
TRACE_3("params",_item,_vehicle,_amount);
|
||||
params ["_item", "_vehicle", ["_amount", 1], ["_ignoreInteraction", false]];
|
||||
TRACE_4("params",_item,_vehicle,_amount,_ignoreInteraction);
|
||||
|
||||
private _loaded = 0;
|
||||
|
||||
// Get config sensitive case name
|
||||
if (_item isEqualType "") then {
|
||||
_item = _item call EFUNC(common,getConfigName);
|
||||
|
||||
for "_i" from 1 to _amount do {
|
||||
[_item, _vehicle] call FUNC(loadItem);
|
||||
if !([_item, _vehicle, _ignoreInteraction] call FUNC(loadItem)) exitWith {};
|
||||
|
||||
_loaded = _loaded + 1;
|
||||
};
|
||||
} else {
|
||||
[_item, _vehicle] call FUNC(loadItem);
|
||||
_loaded = parseNumber ([_item, _vehicle, _ignoreInteraction] call FUNC(loadItem));
|
||||
|
||||
_item = typeOf _item;
|
||||
};
|
||||
|
||||
TRACE_1("loaded",_loaded);
|
||||
|
||||
// Invoke listenable event
|
||||
["ace_cargoAdded", [_item, _vehicle, _amount]] call CBA_fnc_globalEvent;
|
||||
["ace_cargoAdded", [_item, _vehicle, _loaded]] call CBA_fnc_globalEvent;
|
||||
|
||||
_loaded // return
|
||||
|
@ -22,11 +22,11 @@ private _type = typeOf _vehicle;
|
||||
private _config = configOf _vehicle;
|
||||
|
||||
// If vehicle had space given to it via eden/public, then override config hasCargo setting
|
||||
private _hasCargoPublic = _item getVariable QGVAR(hasCargo);
|
||||
private _hasCargoPublicDefined = !isNil "_canLoadPublic";
|
||||
private _hasCargoPublic = _vehicle getVariable QGVAR(hasCargo);
|
||||
private _hasCargoPublicDefined = !isNil "_hasCargoPublic";
|
||||
|
||||
if (_hasCargoPublicDefined && {!(_hasCargoPublic isEqualType false)}) then {
|
||||
WARNING_4("%1[%2] - Variable %3 is %4 - Should be bool",_item,_type,QGVAR(hasCargo),_hasCargoPublic);
|
||||
WARNING_4("%1[%2] - Variable %3 is %4 - Should be bool",_vehicle,_type,QGVAR(hasCargo),_hasCargoPublic);
|
||||
};
|
||||
|
||||
private _hasCargoConfig = getNumber (_config >> QGVAR(hasCargo)) == 1;
|
||||
@ -52,14 +52,21 @@ if (isServer) then {
|
||||
|
||||
private _cargoClassname = "";
|
||||
private _cargoCount = 0;
|
||||
private _loaded = 0;
|
||||
|
||||
{
|
||||
_cargoClassname = getText (_x >> "type");
|
||||
_cargoCount = getNumber (_x >> "amount");
|
||||
|
||||
TRACE_3("adding ACE_Cargo",configName _x,_cargoClassname,_cargoCount);
|
||||
TRACE_3("adding ace_cargo",configName _x,_cargoClassname,_cargoCount);
|
||||
|
||||
["ace_addCargo", [_cargoClassname, _vehicle, _cargoCount]] call CBA_fnc_localEvent;
|
||||
// Ignore stability check (distance check is also ignored with this, but it's ignored by default if item is a string)
|
||||
_loaded = [_cargoClassname, _vehicle, _cargoCount, true] call FUNC(addCargoItem);
|
||||
|
||||
// Let loop continue until the end, so that it prints everything into the rpt (there might be smaller items that could still fit in cargo)
|
||||
if (_loaded != _cargoCount) then {
|
||||
WARNING_5("%1 (%2) could not fit %3 %4 inside its cargo, only %5 were loaded.",_vehicle,_type,_cargoCount,_cargoClassname,_loaded);
|
||||
};
|
||||
} forEach ("true" configClasses (_config >> QUOTE(ADDON) >> "cargo"));
|
||||
};
|
||||
|
||||
|
@ -35,8 +35,12 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_deployObject">
|
||||
<English>Deploy</English>
|
||||
<Italian>Piazza</Italian>
|
||||
<Russian>Разместить</Russian>
|
||||
<Japanese>配置する</Japanese>
|
||||
<Korean>배치하기</Korean>
|
||||
<French>Déployer</French>
|
||||
<Spanish>Desplegar</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ScrollAction">
|
||||
<English>Raise/Lower | (Ctrl + Scroll) Rotate</English>
|
||||
@ -279,14 +283,20 @@
|
||||
<Key ID="STR_ACE_Cargo_LoadingItem">
|
||||
<English>Loading %1 into %2...</English>
|
||||
<Spanish>Cargando %1 en %2...</Spanish>
|
||||
<Italian>Caricando %1 in %2...</Italian>
|
||||
<Japanese>%1 を %2 に積み込んでいます・・・</Japanese>
|
||||
<Russian>Загружаем %1 в %2...</Russian>
|
||||
<Korean>%1을(를) %2에 싣는 중...</Korean>
|
||||
<French>Chargement %1 dans %2...</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_UnloadingItem">
|
||||
<English>Unloading %1 from %2...</English>
|
||||
<Spanish>Descargando %1 de %2...</Spanish>
|
||||
<Italian>Scaricando %1 da %2...</Italian>
|
||||
<Japanese>%1 を %2 から降ろしています・・・</Japanese>
|
||||
<Russian>Выгружаем %1 из %2...</Russian>
|
||||
<Korean>%1을(를) %2(으)로부터 내리는 중...</Korean>
|
||||
<French>Déchargement %1 de %2...</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_LoadingFailed">
|
||||
<English>%1<br/>could not be loaded</English>
|
||||
@ -328,6 +338,7 @@
|
||||
<Japanese>荷降ろし不可能です</Japanese>
|
||||
<Korean>하역할 수가 없습니다</Korean>
|
||||
<Russian>Не может быть выгружен</Russian>
|
||||
<Spanish>No puede ser descargado</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SizeMenu">
|
||||
<English>Cargo Size: %1</English>
|
||||
@ -337,6 +348,7 @@
|
||||
<Japanese>貨物のサイズ: %1</Japanese>
|
||||
<Korean>화물 크기: %1</Korean>
|
||||
<Russian>Размер груза: %1</Russian>
|
||||
<Spanish>Tamaño de carga: %1</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_customName_edenName">
|
||||
<English>Custom Name</English>
|
||||
@ -504,7 +516,7 @@
|
||||
<Key ID="STR_ACE_Cargo_loadTimeCoefficient_description">
|
||||
<English>Modifies how long it takes to load/unload items.\nTime, in seconds, is the size of the item multiplied by this value.</English>
|
||||
<German>Gibt an, wie lange das Laden / Entladen von Gegenständen dauern soll.\nZeit in Sekunden, die mit der Größe des Gegenstandes multipliziert wird.</German>
|
||||
<Japanese>貨物の積み込み/積み下ろしに掛かる時間を変更します。\n時間 (秒) は、貨物のサイズにこの値を掛けたものです。</Japanese>
|
||||
<Japanese>貨物の積み込み/積み下ろしに掛かる時間を変更します。\n時間 (秒単位) は、貨物のサイズにこの値を掛けたものです。</Japanese>
|
||||
<Polish>Modyfikuje, jak długo zajmuje załadowywanie/wyładowywanie przedmiotów. \nCzasem, w sekundach, jest wielkość przedmiotu razy jego wartość.</Polish>
|
||||
<Italian>Modifica il tempo impiegato per caricare o scaricare gli oggetti.\nIl tempo, in secondi, equivale alla dimensione dell'oggetto moltiplicata per questo valore</Italian>
|
||||
<Russian>Изменяет время для загрузки/выгрузки предметов. \nВремя (сек) - это размер предмета, умноженный на это значение.</Russian>
|
||||
@ -570,13 +582,21 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_enableDeploy">
|
||||
<English>Enable deploy</English>
|
||||
<Italian>Abilita Piazzamento</Italian>
|
||||
<Russian>Включить размещение</Russian>
|
||||
<Japanese>配置機能を有効化</Japanese>
|
||||
<Korean>배치 활성화</Korean>
|
||||
<French>Permettre le placement</French>
|
||||
<Spanish>Habilitar despliegue</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_enableDeploy_description">
|
||||
<English>Controls whether cargo items can be unloaded via the deploy method.</English>
|
||||
<Italian>Determina se oggetti in carico possono essere scaricati e piazzati direttamente.</Italian>
|
||||
<Russian>Определяет, можно ли выгружать грузы с помощью метода размещения.</Russian>
|
||||
<Japanese>配置機能を介して貨物アイテムを降ろすことが出来るかどうかを制御します。</Japanese>
|
||||
<Korean>배치 방법을 통해 화물 아이템을 내릴 수 있는지 여부를 제어합니다.</Korean>
|
||||
<French>Contrôler si les éléments de cargaison peuvent être déchargés via la méthode de déploiement.</French>
|
||||
<Spanish>Controla si los objetos de la carga pueden ser descargados mediante el método de despliegue.</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
6
addons/casings/CfgVehicles.hpp
Normal file
6
addons/casings/CfgVehicles.hpp
Normal file
@ -0,0 +1,6 @@
|
||||
class CfgVehicles {
|
||||
class FxCartridge;
|
||||
class FxCartridge_65_caseless: FxCartridge {
|
||||
GVAR(model) = ""; // note: the vanilla 6.5 caseless don't actually use this, just being safe
|
||||
};
|
||||
};
|
@ -15,3 +15,4 @@ class CfgPatches {
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
|
@ -20,32 +20,31 @@ params ["_unit", "", "", "", "_ammo"];
|
||||
|
||||
if (!isNull objectParent _unit) exitWith {};
|
||||
|
||||
private _modelPath = GVAR(cachedCasings) get _ammo;
|
||||
|
||||
if (isNil "_modelPath") then {
|
||||
private _modelPath = GVAR(cachedCasings) getOrDefaultCall [_ammo, {
|
||||
private _cartridge = getText (configFile >> "CfgAmmo" >> _ammo >> "cartridge");
|
||||
//Default cartridge is a 5.56mm model
|
||||
_modelPath = switch (_cartridge) do {
|
||||
case "FxCartridge_9mm": { "A3\Weapons_f\ammo\cartridge_small.p3d" };
|
||||
case "FxCartridge_65": { "A3\weapons_f\ammo\cartridge_65.p3d" };
|
||||
case "FxCartridge_762": { "A3\weapons_f\ammo\cartridge_762.p3d" };
|
||||
case "FxCartridge_762x39": { "A3\weapons_f_enoch\ammo\cartridge_762x39.p3d" };
|
||||
case "FxCartridge_93x64_Ball": { "A3\Weapons_F_Mark\Ammo\cartridge_93x64.p3d" };
|
||||
case "FxCartridge_338_Ball": { "A3\Weapons_F_Mark\Ammo\cartridge_338_LM.p3d" };
|
||||
case "FxCartridge_338_NM": { "A3\Weapons_F_Mark\Ammo\cartridge_338_NM.p3d" };
|
||||
case "FxCartridge_127": { "A3\weapons_f\ammo\cartridge_127.p3d" };
|
||||
case "FxCartridge_127x54": { "A3\Weapons_F_Mark\Ammo\cartridge_127x54.p3d" };
|
||||
case "FxCartridge_slug": { "A3\weapons_f\ammo\cartridge_slug.p3d" };
|
||||
case "FxCartridge_12Gauge_HE_lxWS": { "lxWS\weapons_1_f_lxws\Ammo\cartridge_he_lxws.p3d" };
|
||||
case "FxCartridge_12Gauge_Slug_lxWS": { "lxWS\weapons_1_f_lxws\Ammo\cartridge_slug_lxws.p3d" };
|
||||
case "FxCartridge_12Gauge_Smoke_lxWS": { "lxWS\weapons_1_f_lxws\Ammo\cartridge_smoke_lxws.p3d" };
|
||||
case "FxCartridge_12Gauge_Pellet_lxWS": { "lxWS\weapons_1_f_lxws\Ammo\cartridge_pellet_lxws.p3d" };
|
||||
case "": { "" };
|
||||
default { "A3\Weapons_f\ammo\cartridge.p3d" };
|
||||
if (_cartridge == "") then { // return (note: can't use exitWith)
|
||||
""
|
||||
} else {
|
||||
private _cartridgeConfig = configFile >> "CfgVehicles" >> _cartridge;
|
||||
|
||||
// if explicitly defined, use ACE's config
|
||||
if (isText (_cartridgeConfig >> QGVAR(model))) exitWith {
|
||||
getText (_cartridgeConfig >> QGVAR(model))
|
||||
};
|
||||
GVAR(cachedCasings) set [_ammo, _modelPath];
|
||||
// use casing's default model
|
||||
private _model = getText (_cartridgeConfig >> "model");
|
||||
if ("a3\weapons_f\empty" in toLowerANSI _model) exitWith { "" };
|
||||
|
||||
// Add file extension if missing (fileExists needs file extension)
|
||||
if ((_model select [count _model - 4]) != ".p3d") then {
|
||||
_model = _model + ".p3d";
|
||||
};
|
||||
|
||||
["", _model] select (fileExists _model)
|
||||
};
|
||||
}, true];
|
||||
|
||||
if (_modelPath isEqualTo "") exitWith {};
|
||||
|
||||
private _unitPos = getposASL _unit;
|
||||
|
@ -2,6 +2,6 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
["ace_firedPlayer", DFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||
// ["ace_firedPlayerNonLocal", DFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||
// ["ace_firedNonPlayer", DFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||
["ace_firedPlayer", LINKFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||
// ["ace_firedPlayerNonLocal", LINKFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||
// ["ace_firedNonPlayer", LINKFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||
|
@ -355,7 +355,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiGreen_DisplayName">
|
||||
<English>Chemlight (Hi Green)</English>
|
||||
<French>Cyalume HL (vert)</French>
|
||||
<French>Cyalume HL (Vert)</French>
|
||||
<German>Knicklicht (Grün, Hell)</German>
|
||||
<Japanese>ケミカルライト(高輝度 緑)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy zielony)</Polish>
|
||||
@ -533,9 +533,9 @@
|
||||
<English>Chemlight Shield (Green)</English>
|
||||
<Japanese>ケミカルライト シールド(緑)</Japanese>
|
||||
<Polish>Osłona na świetlik (zielona)</Polish>
|
||||
<German>Knicklicht-Abschirmung (grün)</German>
|
||||
<German>Knicklicht-Abschirmung (Grün)</German>
|
||||
<Korean>화학조명 가림막 (초록)</Korean>
|
||||
<French>Etui avec cyalume (vert)</French>
|
||||
<French>Etui avec cyalume (Vert)</French>
|
||||
<Italian>Scudo Luce Chimica (Verde)</Italian>
|
||||
<Chinese>螢光棒保護殼 (綠色)</Chinese>
|
||||
<Chinesesimp>荧光棒保护壳(绿色)</Chinesesimp>
|
||||
|
@ -1,5 +1,6 @@
|
||||
class CfgMovesBasic {
|
||||
class Default;
|
||||
|
||||
// From ACRE
|
||||
class ManActions {
|
||||
GVAR(stop) = QGVAR(stop);
|
||||
@ -82,5 +83,14 @@ class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
class AinvPknlMstpSnonWnonDnon_medic0: HealBase {
|
||||
variantsPlayer[] = {};
|
||||
};
|
||||
|
||||
// Idle affects legs when weapon switching - fixes units sliding when holstering weapons
|
||||
class AmovPercMstpSnonWnonDnon: StandBase {
|
||||
idle = "";
|
||||
};
|
||||
// Need to reset idle, as it breaks animations otherwise
|
||||
class CutSceneAnimationBase: AmovPercMstpSnonWnonDnon {
|
||||
idle = "idleDefault";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -13,6 +13,7 @@ PREP(addLineToDebugDraw);
|
||||
PREP(addSwayFactor);
|
||||
PREP(addToInventory);
|
||||
PREP(addWeapon);
|
||||
PREP(adjustMagazineAmmo);
|
||||
PREP(assignedItemFix);
|
||||
PREP(assignObjectsInList);
|
||||
PREP(ambientBrightness);
|
||||
|
@ -18,7 +18,7 @@
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//Status Effect EHs:
|
||||
[QGVAR(setStatusEffect), {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(setStatusEffect), LINKFUNC(statusEffect_set)] call CBA_fnc_addEventHandler;
|
||||
["forceWalk", false, ["ace_advanced_fatigue", "ACE_SwitchUnits", "ACE_Attach", "ace_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_Trenches", "ace_medical_fracture"]] call FUNC(statusEffect_addType);
|
||||
["blockSprint", false, ["ace_advanced_fatigue", "ace_dragging", "ace_medical_fracture"]] call FUNC(statusEffect_addType);
|
||||
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered)]] call FUNC(statusEffect_addType);
|
||||
@ -145,8 +145,7 @@ if (isServer) then {
|
||||
INFO_3("[%1] DC - Was Zeus [%2] while controlling unit [%3] - manually clearing `bis_fnc_moduleRemoteControl_owner`",[_x] call FUNC(getName),_dcPlayer,_x);
|
||||
_x setVariable ["bis_fnc_moduleRemoteControl_owner", nil, true];
|
||||
};
|
||||
nil
|
||||
} count (curatorEditableObjects _zeusLogic);
|
||||
} forEach (curatorEditableObjects _zeusLogic);
|
||||
};
|
||||
}];
|
||||
};
|
||||
@ -157,9 +156,9 @@ if (isServer) then {
|
||||
INFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation);
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(fixCollision), FUNC(fixCollision)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(fixFloating), FUNC(fixFloating)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(fixPosition), FUNC(fixPosition)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(fixCollision), LINKFUNC(fixCollision)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(fixFloating), LINKFUNC(fixFloating)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(fixPosition), LINKFUNC(fixPosition)] call CBA_fnc_addEventHandler;
|
||||
|
||||
["ace_loadPersonEvent", LINKFUNC(loadPersonLocal)] call CBA_fnc_addEventHandler;
|
||||
["ace_unloadPersonEvent", LINKFUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler;
|
||||
@ -209,8 +208,8 @@ if (isServer) then {
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
// Request framework
|
||||
[QGVAR(requestCallback), FUNC(requestCallback)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(receiveRequest), FUNC(receiveRequest)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(requestCallback), LINKFUNC(requestCallback)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(receiveRequest), LINKFUNC(receiveRequest)] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(systemChatGlobal), {systemChat _this}] call CBA_fnc_addEventHandler;
|
||||
|
||||
@ -219,7 +218,7 @@ if (isServer) then {
|
||||
[QGVAR(enableSimulationGlobal), {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(setShotParents), {(_this select 0) setShotParents [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler;
|
||||
["ace_setOwner", {(_this select 0) setOwner (_this select 1)}] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(serverLog), FUNC(serverLog)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(serverLog), LINKFUNC(serverLog)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(claimSafe), LINKFUNC(claimSafeServer)] call CBA_fnc_addEventHandler;
|
||||
};
|
||||
|
||||
@ -236,14 +235,14 @@ if (!isServer) then {
|
||||
["ACEa", [player]] call CBA_fnc_serverEvent;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
} else {
|
||||
["ACEa", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler;
|
||||
["ACEa", LINKFUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler;
|
||||
};
|
||||
|
||||
["ACEe", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||
["ACEs", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||
["ACEe", LINKFUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||
["ACEs", LINKFUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||
|
||||
if (isServer) then {
|
||||
[FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler;
|
||||
[LINKFUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
||||
|
||||
@ -392,8 +391,8 @@ addMissionEventHandler ["PlayerViewChanged", {
|
||||
// Eventhandlers for player controlled machines
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
[QGVAR(displayTextStructured), {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(displayTextPicture), {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(displayTextStructured), LINKFUNC(displayTextStructured)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(displayTextPicture), LINKFUNC(displayTextPicture)] call CBA_fnc_addEventHandler;
|
||||
|
||||
["ace_unconscious", {
|
||||
params ["_unit", "_isUnconscious"];
|
||||
@ -403,7 +402,7 @@ addMissionEventHandler ["PlayerViewChanged", {
|
||||
};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
["ace_useItem", DFUNC(useItem)] call CBA_fnc_addEventHandler;
|
||||
["ace_useItem", LINKFUNC(useItem)] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
@ -499,10 +498,24 @@ GVAR(reloadMutex_lastMagazines) = [];
|
||||
// Start the sway loop
|
||||
//////////////////////////////////////////////////
|
||||
["CBA_settingsInitialized", {
|
||||
["multiplier", {
|
||||
switch (true) do {
|
||||
case (isWeaponRested ACE_player): {
|
||||
GVAR(swayFactor) * GVAR(restedSwayFactor)
|
||||
};
|
||||
case (isWeaponDeployed ACE_player): {
|
||||
GVAR(swayFactor) * GVAR(deployedSwayFactor)
|
||||
};
|
||||
default {
|
||||
GVAR(swayFactor)
|
||||
};
|
||||
};
|
||||
}, QUOTE(ADDON)] call FUNC(addSwayFactor);
|
||||
|
||||
[{
|
||||
// frame after settingsInitialized to ensure all other addons have added their factors
|
||||
if ((GVAR(swayFactorsBaseline) + GVAR(swayFactorsMultiplier)) isNotEqualTo []) then {
|
||||
call FUNC(swayLoop)
|
||||
if (GVAR(enableSway)) then {
|
||||
call FUNC(swayLoop);
|
||||
};
|
||||
// check for pre-3.16 sway factors being added
|
||||
if (!isNil {missionNamespace getVariable "ACE_setCustomAimCoef"}) then {
|
||||
|
@ -43,8 +43,7 @@ if (isServer) then {
|
||||
{
|
||||
_x params ["", "_eventArgs","_ttl"];
|
||||
[_eventName, _eventArgs, _ttl] call FUNC(_handleSyncedEvent);
|
||||
false
|
||||
} count _eventLog;
|
||||
} forEach _eventLog;
|
||||
|
||||
INFO_1("[%1] synchronized",_eventName);
|
||||
};
|
||||
|
@ -24,7 +24,7 @@ if (_name in GVAR(syncedEvents)) exitWith {
|
||||
false
|
||||
};
|
||||
|
||||
private _eventId = [_name, FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||
private _eventId = [_name, LINKFUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||
private _data = [_handler, [], _ttl, _eventId];
|
||||
|
||||
GVAR(syncedEvents) set [_name, _data];
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Garth 'L-H' de Wet
|
||||
* Adds an item, weapon, or magazine to the unit's inventory or places it in a weaponHolder if no space.
|
||||
* Adds an item, weapon, or magazine to the unit's inventory or places it in a weapon holder if no space.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
@ -11,10 +11,10 @@
|
||||
*
|
||||
* Return Value:
|
||||
* 0: Added to player <BOOL>
|
||||
* 1: weaponholder <OBJECT>
|
||||
* 1: Weapon holder item was placed in <OBJECT>
|
||||
*
|
||||
* Example:
|
||||
* [bob, "classname", "", 5] call ace_common_fnc_addToInventory
|
||||
* [player, "30Rnd_65x39_caseless_mag", "", 5] call ace_common_fnc_addToInventory
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
@ -26,6 +26,7 @@ private _type = _classname call FUNC(getItemType);
|
||||
private _canAdd = false;
|
||||
private _canFitWeaponSlot = false;
|
||||
private _addedToUnit = false;
|
||||
private _weaponHolder = _unit;
|
||||
|
||||
switch (_container) do {
|
||||
case "vest": {
|
||||
@ -58,6 +59,21 @@ switch (_container) do {
|
||||
};
|
||||
};
|
||||
|
||||
if (_type select 0 == "magazine") then {
|
||||
private _configAmmoCount = getNumber (configFile >> "CfgMagazines" >> _classname >> "count");
|
||||
|
||||
// https://feedback.bistudio.com/T74244
|
||||
// When adding throwables with the addXXXCargo(Global) commands, they don't show up in the throwables list
|
||||
// If a throwable has more than 1 ammo count, adding it with addItem(XXX) commands also renders the throwable unusable
|
||||
if (_configAmmoCount == 1 && {_ammoCount in [-1, 1]} && {_classname call BIS_fnc_isThrowable}) then { // TODO: replace with https://community.bistudio.com/wiki/isThrowable in 2.18
|
||||
_type set [0, "item"];
|
||||
};
|
||||
|
||||
if (_ammoCount == -1) then {
|
||||
_ammoCount = _configAmmoCount;
|
||||
};
|
||||
};
|
||||
|
||||
switch (_type select 0) do {
|
||||
case "weapon": {
|
||||
if (_canAdd || {_canFitWeaponSlot}) then {
|
||||
@ -94,19 +110,17 @@ switch (_type select 0) do {
|
||||
} else {
|
||||
_addedToUnit = false;
|
||||
|
||||
private _pos = _unit modelToWorldVisual [0,1,0.05];
|
||||
_weaponHolder = nearestObject [_unit, "WeaponHolder"];
|
||||
|
||||
_unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"];
|
||||
_unit addWeaponCargoGlobal [_classname, 1];
|
||||
_unit setPosATL _pos;
|
||||
if (isNull _weaponHolder || {_unit distance _weaponHolder > 2}) then {
|
||||
_weaponHolder = createVehicle ["GroundWeaponHolder", _unit, [], 0, "CAN_COLLIDE"];
|
||||
};
|
||||
|
||||
_weaponHolder addWeaponCargoGlobal [_classname, 1];
|
||||
};
|
||||
};
|
||||
|
||||
case "magazine": {
|
||||
if (_ammoCount == -1) then {
|
||||
_ammoCount = getNumber (configFile >> "CfgMagazines" >> _classname >> "count");
|
||||
};
|
||||
|
||||
if (_canAdd) then {
|
||||
_addedToUnit = true;
|
||||
|
||||
@ -127,11 +141,13 @@ switch (_type select 0) do {
|
||||
} else {
|
||||
_addedToUnit = false;
|
||||
|
||||
private _pos = _unit modelToWorldVisual [0,1,0.05];
|
||||
_weaponHolder = nearestObject [_unit, "WeaponHolder"];
|
||||
|
||||
_unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"];
|
||||
_unit addMagazineAmmoCargo [_classname, 1, _ammoCount];
|
||||
_unit setPosATL _pos;
|
||||
if (isNull _weaponHolder || {_unit distance _weaponHolder > 2}) then {
|
||||
_weaponHolder = createVehicle ["GroundWeaponHolder", _unit, [], 0, "CAN_COLLIDE"];
|
||||
};
|
||||
|
||||
_weaponHolder addMagazineAmmoCargo [_classname, 1, _ammoCount];
|
||||
};
|
||||
};
|
||||
|
||||
@ -156,11 +172,13 @@ switch (_type select 0) do {
|
||||
} else {
|
||||
_addedToUnit = false;
|
||||
|
||||
private _pos = _unit modelToWorldVisual [0,1,0.05];
|
||||
_weaponHolder = nearestObject [_unit, "WeaponHolder"];
|
||||
|
||||
_unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"];
|
||||
_unit addItemCargoGlobal [_classname, 1];
|
||||
_unit setPosATL _pos;
|
||||
if (isNull _weaponHolder || {_unit distance _weaponHolder > 2}) then {
|
||||
_weaponHolder = createVehicle ["GroundWeaponHolder", _unit, [], 0, "CAN_COLLIDE"];
|
||||
};
|
||||
|
||||
_weaponHolder addItemCargoGlobal [_classname, 1];
|
||||
};
|
||||
};
|
||||
|
||||
@ -170,4 +188,4 @@ switch (_type select 0) do {
|
||||
};
|
||||
};
|
||||
|
||||
[_addedToUnit, _unit]
|
||||
[_addedToUnit, _weaponHolder]
|
||||
|
107
addons/common/functions/fnc_adjustMagazineAmmo.sqf
Normal file
107
addons/common/functions/fnc_adjustMagazineAmmo.sqf
Normal file
@ -0,0 +1,107 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Katalam, Blue, Brett Mayson, johnb43
|
||||
* Handle adjusting a magazine's ammo
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle or Unit <OBJECT>
|
||||
* 1: Item <STRING>
|
||||
* 2: Ammo to adjust by <NUMBER> (default: -1)
|
||||
*
|
||||
* Return Value:
|
||||
* How much the ammo was adjusted by <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [player, "30Rnd_556x45_Stanag", 1] call ace_common_fnc_adjustMagazineAmmo;
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_unit", "_magazine", ["_count", -1]];
|
||||
|
||||
if (_count == 0) exitWith {0};
|
||||
|
||||
private _containers = if (_unit isKindOf "CAManBase") then {
|
||||
[uniformContainer _unit, vestContainer _unit, backpackContainer _unit]
|
||||
} else {
|
||||
[_unit]
|
||||
};
|
||||
|
||||
scopeName "main";
|
||||
|
||||
private _originalCount = _count;
|
||||
private _container = objNull;
|
||||
private _magazinesContainer = [];
|
||||
private _newAmmoCount = 0;
|
||||
private _removeAmmo = _count < 0;
|
||||
private _maxMagazineAmmo = getNumber (configFile >> "CfgMagazines" >> _magazine >> "count");
|
||||
|
||||
{
|
||||
_container = _x;
|
||||
|
||||
// Get all magazines of _magazine type
|
||||
_magazinesContainer = (magazinesAmmoCargo _container) select {_x select 0 == _magazine};
|
||||
|
||||
// Get the ammo count, filter out magazines with 0 ammo
|
||||
_magazinesContainer = (_magazinesContainer apply {_x select 1}) select {_x != 0};
|
||||
|
||||
// If there are none, skip to next container
|
||||
if (_magazinesContainer isEqualTo []) then {
|
||||
continue;
|
||||
};
|
||||
|
||||
// Sort, smallest first when removing, largest first when adding
|
||||
_magazinesContainer sort _removeAmmo;
|
||||
|
||||
if (_removeAmmo) then {
|
||||
{
|
||||
_count = _x + _count;
|
||||
|
||||
_container addMagazineAmmoCargo [_magazine, -1, _x];
|
||||
|
||||
if (_count >= 0) then {
|
||||
// Only add magazine back if it's not empty
|
||||
if (_count != 0) then {
|
||||
_container addMagazineAmmoCargo [_magazine, 1, _count];
|
||||
};
|
||||
|
||||
_originalCount breakOut "main";
|
||||
};
|
||||
} forEach _magazinesContainer;
|
||||
} else {
|
||||
// This loop only fills up partially filled magazines
|
||||
{
|
||||
// Fill the magazine to either its max or until all ammo has been added
|
||||
_newAmmoCount = (_x + _count) min _maxMagazineAmmo;
|
||||
|
||||
if (_newAmmoCount <= _maxMagazineAmmo) then {
|
||||
_container addMagazineAmmoCargo [_magazine, -1, _x];
|
||||
_container addMagazineAmmoCargo [_magazine, 1, _newAmmoCount];
|
||||
};
|
||||
|
||||
// Remove the ammo that was added
|
||||
_count = _count - (_newAmmoCount - _x);
|
||||
|
||||
if (_count <= 0) then {
|
||||
_originalCount breakOut "main";
|
||||
};
|
||||
} forEach (_magazinesContainer select {_x < _maxMagazineAmmo});
|
||||
};
|
||||
} forEach _containers;
|
||||
|
||||
// If there is still remaining ammo to add, try add it after having iterated through all containers
|
||||
if (!_removeAmmo && _count > 0) then {
|
||||
{
|
||||
while {_count > 0 && {_x canAdd [_magazine, 1/* 2.18 , true*/]}} do {
|
||||
_x addMagazineAmmoCargo [_magazine, 1, _count];
|
||||
|
||||
_count = _count - _maxMagazineAmmo;
|
||||
};
|
||||
} forEach _containers;
|
||||
|
||||
if (_count <= 0) then {
|
||||
_originalCount breakOut "main";
|
||||
};
|
||||
};
|
||||
|
||||
_originalCount - _count
|
@ -28,9 +28,7 @@ if (_list isEqualType "") then {
|
||||
};
|
||||
|
||||
{
|
||||
if (!isNil "_x") then {
|
||||
if (_x isEqualType objNull) then {
|
||||
if (local _x) then {
|
||||
if (!isNil "_x" && {_x isEqualType objNull} && {local _x}) then {
|
||||
if (_vehicle) then {
|
||||
(vehicle _x) setVariable [_variable, _setting, _global];
|
||||
TRACE_6("Set variable vehicle",_x,vehicle _x,typeOf (vehicle _x),_variable,_setting,_global);
|
||||
@ -39,7 +37,4 @@ if (_list isEqualType "") then {
|
||||
TRACE_5("Set variable",_x,typeOf _x,_variable,_setting,_global);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
false
|
||||
} count _list;
|
||||
} forEach _list;
|
||||
|
@ -66,8 +66,7 @@ GVAR(settingsMovedToSQF) = [];
|
||||
INFO_1("%1 delayed functions running.",count GVAR(runAtSettingsInitialized));
|
||||
{
|
||||
(_x select 1) call (_x select 0);
|
||||
false
|
||||
} count GVAR(runAtSettingsInitialized);
|
||||
} forEach GVAR(runAtSettingsInitialized);
|
||||
GVAR(runAtSettingsInitialized) = nil; //cleanup
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
|
@ -53,8 +53,7 @@ private _refresh = {
|
||||
|
||||
{
|
||||
ctrlDelete _x;
|
||||
false
|
||||
} count _allControls;
|
||||
} forEach _allControls;
|
||||
|
||||
_allControls = [];
|
||||
|
||||
@ -80,7 +79,6 @@ private _refresh = {
|
||||
_ctrl ctrlSetTextColor _xcolor;
|
||||
_ctrl ctrlCommit 0;
|
||||
_allControls pushBack _ctrl;
|
||||
false
|
||||
} forEach (missionNamespace getVariable [QGVAR(displayIconList),[]]);
|
||||
};
|
||||
|
||||
@ -116,8 +114,7 @@ if (_show) then {
|
||||
if (_x select 0 != _iconId) then {
|
||||
_newList pushBack _x;
|
||||
};
|
||||
false
|
||||
} count _list;
|
||||
} forEach _list;
|
||||
|
||||
missionNamespace setVariable [QGVAR(displayIconList), _newList];
|
||||
call _refresh;
|
||||
|
@ -34,8 +34,7 @@ if (IS_ARRAY(_var)) then {
|
||||
|
||||
{
|
||||
[_x, _depth] call FUNC(dumpArray);
|
||||
false
|
||||
} count _var;
|
||||
} forEach _var;
|
||||
|
||||
diag_log text format ["%1],", _pad];
|
||||
};
|
||||
|
@ -25,8 +25,7 @@ if (!isNil "ACE_PFH_COUNTER") then {
|
||||
private _isActive = ["ACTIVE", "REMOVED"] select isNil {CBA_common_PFHhandles select (_pfh select 0)};
|
||||
|
||||
diag_log text format ["Registered PFH: id=%1 [%2, delay %3], %4:%5", _pfh select 0, _isActive, _parameters select 1, _pfh select 1, _pfh select 2];
|
||||
false
|
||||
} count ACE_PFH_COUNTER;
|
||||
} forEach ACE_PFH_COUNTER;
|
||||
};
|
||||
|
||||
diag_log text format ["ACE COUNTER RESULTS"];
|
||||
@ -50,8 +49,7 @@ diag_log text format ["-------------------------------------------"];
|
||||
};
|
||||
|
||||
_iter = _iter + 1;
|
||||
false
|
||||
} count _counterEntry;
|
||||
} forEach _counterEntry;
|
||||
|
||||
// results
|
||||
_averageResult = (_total / _count) * 1000;
|
||||
@ -61,8 +59,7 @@ diag_log text format ["-------------------------------------------"];
|
||||
} else {
|
||||
diag_log text format ["%1: No results", _counterEntry select 0];
|
||||
};
|
||||
false
|
||||
} count ACE_COUNTERS;
|
||||
} forEach ACE_COUNTERS;
|
||||
|
||||
/*
|
||||
// Dump PFH Trackers
|
||||
|
@ -50,8 +50,7 @@ if (_unit isKindOf "CAManBase") then {
|
||||
_gunner = _unit turretUnit _x;
|
||||
_turret = _x;
|
||||
};
|
||||
false
|
||||
} count allTurrets [_unit, true];
|
||||
} forEach allTurrets [_unit, true];
|
||||
// Ensure that at least the pilot is returned if there is no gunner
|
||||
if (isManualFire _unit && {isNull _gunner}) then {
|
||||
_gunner = effectiveCommander _unit;
|
||||
|
@ -17,6 +17,6 @@
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
if (currentWeapon _unit != "" && {currentWeapon _unit == primaryWeapon _unit} && {weaponLowered _unit} && {stance _unit == "STAND"} && {vehicle _unit == _unit}) then {
|
||||
if (currentWeapon _unit != "" && {currentWeapon _unit == primaryWeapon _unit} && {weaponLowered _unit} && {stance _unit == "STAND"} && {isNull objectParent _unit}) then {
|
||||
[_unit, "amovpercmstpsraswrfldnon", 0] call FUNC(doAnimation);
|
||||
};
|
||||
|
@ -35,7 +35,6 @@ private _return = [];
|
||||
_return pushBack [_x select 0, typeName _val, _val, _x select 2, _x select 5];
|
||||
};
|
||||
};
|
||||
false
|
||||
} count GVAR(OBJECT_VARIABLES_STORAGE);
|
||||
} forEach GVAR(OBJECT_VARIABLES_STORAGE);
|
||||
|
||||
_return
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dedmen
|
||||
* Author: Dedmen, Blue, johnb43
|
||||
* Return how many items of type _itemType the player has in his containers (Uniform, Vest, Backpack)
|
||||
* Doesn't count assignedItems, weapons, weapon attachments, magazines in weapons
|
||||
*
|
||||
@ -19,13 +19,17 @@
|
||||
|
||||
params ["_unit", "_itemType"];
|
||||
|
||||
private _countItemsInContainer = {
|
||||
(getItemCargo _this) params ["_itemTypes", "_itemCounts"];
|
||||
private _count = 0;
|
||||
private _isMagazine = isClass (configFile >> "CfgMagazines" >> _itemType);
|
||||
|
||||
private _index = _itemTypes find _itemType;
|
||||
_itemCounts param [_index, 0]
|
||||
};
|
||||
{
|
||||
(if (_isMagazine) then {
|
||||
getMagazineCargo _x
|
||||
} else {
|
||||
getItemCargo _x
|
||||
}) params ["_itemTypes", "_itemCounts"];
|
||||
|
||||
((uniformContainer _unit) call _countItemsInContainer) +
|
||||
((vestContainer _unit) call _countItemsInContainer) +
|
||||
((backpackContainer _unit) call _countItemsInContainer)
|
||||
_count = _count + (_itemCounts param [_itemTypes find _itemType, 0]);
|
||||
} forEach [uniformContainer _unit, vestContainer _unit, backpackContainer _unit];
|
||||
|
||||
_count
|
||||
|
@ -29,7 +29,7 @@ private _unitActionsCfg = configFile >> "CfgMovesBasic" >> "Actions" >> getText
|
||||
|
||||
TRACE_2("Animation/Action",configName _unitAnimationCfg,configName _unitActionsCfg);
|
||||
|
||||
if (vehicle _unit != _unit) then {
|
||||
if (!isNull objectParent _unit) then {
|
||||
private _interpolateArray = getArray (_unitAnimationCfg >> "interpolateTo");
|
||||
|
||||
for "_index" from 0 to (count _interpolateArray - 1) step 2 do {
|
||||
|
@ -29,7 +29,6 @@ private _doorTurrets = [];
|
||||
if (((getNumber (_config >> "isCopilot")) == 0) && {count getArray (_config >> "weapons") > 0}) then {
|
||||
_doorTurrets pushBack _x;
|
||||
};
|
||||
false
|
||||
} count _turrets;
|
||||
} forEach _turrets;
|
||||
|
||||
_doorTurrets
|
||||
|
@ -28,8 +28,7 @@ private _gunner = objNull;
|
||||
if (_weapon in (_vehicle weaponsTurret _x)) exitWith {
|
||||
_gunner = _vehicle turretUnit _x;
|
||||
};
|
||||
false
|
||||
} count allTurrets [_vehicle, true];
|
||||
} forEach allTurrets [_vehicle, true];
|
||||
|
||||
// ensure that at least the pilot is returned if there is no gunner
|
||||
if (isManualFire _vehicle && {isNull _gunner}) then {
|
||||
|
@ -38,8 +38,7 @@ private _enemiesInVehicle = false; //Possible Side Restriction
|
||||
|
||||
{
|
||||
if (side _unit getFriend side _x < 0.6) exitWith {_enemiesInVehicle = true};
|
||||
false
|
||||
} count crew _vehicle;
|
||||
} forEach crew _vehicle;
|
||||
|
||||
switch (_position) do {
|
||||
case "driver" : {
|
||||
|
@ -38,8 +38,7 @@ private _stepY = 1e10;
|
||||
_stepX = getNumber (_x >> "stepX");
|
||||
_stepY = getNumber (_x >> "stepY");
|
||||
};
|
||||
false
|
||||
} count configProperties [_cfgGrid, "isClass _x", false];
|
||||
} forEach configProperties [_cfgGrid, "isClass _x", false];
|
||||
|
||||
private _letterGrid = false;
|
||||
|
||||
|
@ -25,8 +25,7 @@ if (_unit isKindOf "CAManBase") then {
|
||||
} else {
|
||||
{
|
||||
_return = _return + ({_x == _magazine} count magazines _x);
|
||||
false
|
||||
} count crew _unit;
|
||||
} forEach crew _unit;
|
||||
|
||||
(getMagazineCargo _unit) params [["_magNames", []], ["_magCount", []]];
|
||||
{
|
||||
|
@ -24,7 +24,6 @@ scopeName "main";
|
||||
|
||||
{
|
||||
if (_unit == (_vehicle turretUnit _x)) then {_x breakOut "main"};
|
||||
nil
|
||||
} count allTurrets [_vehicle, true];
|
||||
} forEach allTurrets [_vehicle, true];
|
||||
|
||||
[]
|
||||
|
@ -33,7 +33,6 @@ private _crew = [];
|
||||
_crew pushBack (_x select 0);
|
||||
};
|
||||
};
|
||||
false
|
||||
} count fullCrew _vehicle;
|
||||
} forEach fullCrew _vehicle;
|
||||
|
||||
_crew
|
||||
|
@ -29,7 +29,6 @@ private _modes = [];
|
||||
if (_x == "this") then {
|
||||
_modes pushBack _weapon;
|
||||
};
|
||||
false
|
||||
} count getArray (_config >> "modes");
|
||||
} forEach getArray (_config >> "modes");
|
||||
|
||||
_modes
|
||||
|
@ -42,7 +42,6 @@ private _ammo = _muzzles apply {0};
|
||||
_ammo set [_index, _x select 1];
|
||||
};
|
||||
};
|
||||
false
|
||||
} count magazinesAmmoFull _unit;
|
||||
} forEach magazinesAmmoFull _unit;
|
||||
|
||||
[_attachments, _muzzles, _magazines, _ammo];
|
||||
|
@ -18,7 +18,7 @@
|
||||
params ["_unit"];
|
||||
|
||||
// Animation changes even inside vehicle post-1.60
|
||||
if (stance _unit == "PRONE" || {vehicle _unit != _unit} || {_unit call EFUNC(common,isSwimming)}) exitWith {};
|
||||
if (stance _unit == "PRONE" || {!isNull objectParent _unit} || {_unit call EFUNC(common,isSwimming)}) exitWith {};
|
||||
|
||||
[
|
||||
_unit,
|
||||
|
@ -28,8 +28,7 @@ if (isNil QGVAR(LSD_Vehicles)) then {
|
||||
if (_hSCount > 0) then {
|
||||
GVAR(LSD_Vehicles) pushBack [_x, _hSCount];
|
||||
};
|
||||
nil
|
||||
} count _units;
|
||||
} forEach _units;
|
||||
|
||||
if (isNil QGVAR(LSD_Colors)) then {
|
||||
GVAR(LSD_Colors) = [
|
||||
@ -51,8 +50,7 @@ if (isNil QGVAR(LSD_PFH)) then {
|
||||
for "_i" from 0 to (_hSCount - 1) do {
|
||||
_vehicle setObjectTexture [_i, GVAR(LSD_Colors) select _index];
|
||||
};
|
||||
nil
|
||||
} count GVAR(LSD_Vehicles);
|
||||
} forEach GVAR(LSD_Vehicles);
|
||||
|
||||
_index = ((_index + 1) % 7) mod count GVAR(LSD_Colors);
|
||||
(_this select 0) set [0, _index];
|
||||
|
@ -32,8 +32,7 @@ private _whitespaceList = [];
|
||||
} else {
|
||||
_whitespaceList pushBack ([_x] call CBA_fnc_trim);
|
||||
};
|
||||
false
|
||||
} count _list;
|
||||
} forEach _list;
|
||||
|
||||
_list = _whitespaceList;
|
||||
TRACE_1("Whitespace List",_list);
|
||||
@ -46,8 +45,7 @@ if (_checkNil) then {
|
||||
if (!isNil _x) then {
|
||||
_nilCheckedList pushBack (missionNamespace getVariable _x);
|
||||
};
|
||||
false
|
||||
} count _list;
|
||||
} forEach _list;
|
||||
|
||||
_list = _nilCheckedList;
|
||||
};
|
||||
|
@ -27,8 +27,7 @@ if (isPlayer _unit) then {
|
||||
// clear all disable user input
|
||||
{
|
||||
[_x, false] call FUNC(setDisableUserInputStatus);
|
||||
false
|
||||
} count GVAR(DISABLE_USER_INPUT_COLLECTION);
|
||||
} forEach GVAR(DISABLE_USER_INPUT_COLLECTION);
|
||||
};
|
||||
};
|
||||
|
||||
@ -36,5 +35,4 @@ if (isPlayer _unit) then {
|
||||
if !(_x select 4) then {
|
||||
_unit setVariable [_x select 0, nil, _x select 3];
|
||||
};
|
||||
false
|
||||
} count ([_unit] call FUNC(getAllDefinedSetVariables));
|
||||
} forEach ([_unit] call FUNC(getAllDefinedSetVariables));
|
||||
|
@ -24,6 +24,4 @@ _respawnVariables pushBack "ACE_PersistentFunctions";
|
||||
|
||||
{
|
||||
_unit setVariable [_x, _unit getVariable _x, true];
|
||||
false
|
||||
} count _respawnVariables;
|
||||
nil
|
||||
} forEach _respawnVariables;
|
||||
|
@ -47,7 +47,6 @@ private _array = [];
|
||||
_array pushBack _x;
|
||||
};
|
||||
};
|
||||
false
|
||||
} count toArray _string;
|
||||
} forEach toArray _string;
|
||||
|
||||
toString _array // return
|
||||
|
@ -17,12 +17,12 @@
|
||||
|
||||
private _baseline = 1;
|
||||
if (GVAR(swayFactorsBaseline) isNotEqualTo []) then {
|
||||
_baseline = 1 max ([missionNamespace, "ACE_setCustomAimCoef_baseline", "max"] call EFUNC(common,arithmeticGetResult));
|
||||
_baseline = 1 max ([missionNamespace, "ACE_setCustomAimCoef_baseline", "max"] call FUNC(arithmeticGetResult));
|
||||
};
|
||||
|
||||
private _multiplier = 1;
|
||||
if (GVAR(swayFactorsMultiplier) isNotEqualTo []) then {
|
||||
_multiplier = [missionNamespace, "ACE_setCustomAimCoef_multiplier", "product"] call EFUNC(common,arithmeticGetResult);
|
||||
_multiplier = [missionNamespace, "ACE_setCustomAimCoef_multiplier", "product"] call FUNC(arithmeticGetResult);
|
||||
};
|
||||
|
||||
ACE_player setCustomAimCoef (_baseline * _multiplier);
|
||||
|
@ -58,7 +58,7 @@ if (_switch) then {
|
||||
private _newGroup = createGroup (_x select 1);
|
||||
[_unit] joinSilent _newGroup;
|
||||
};
|
||||
if (count units _currentGroup == 0) then {
|
||||
if (units _currentGroup isEqualTo []) then {
|
||||
deleteGroup _currentGroup;
|
||||
};
|
||||
_previousGroupsList set [_forEachIndex, objNull];
|
||||
|
@ -29,8 +29,7 @@ if (isNil QGVAR(publishSchedId)) then {
|
||||
{
|
||||
_x params ["_unit", "_varName"];
|
||||
_unit setVariable [_varName, _unit getVariable _varName, true];
|
||||
false
|
||||
} count GVAR(publishVarNames);
|
||||
} forEach GVAR(publishVarNames);
|
||||
|
||||
GVAR(publishVarNames) = [];
|
||||
GVAR(publishNextTime) = 1e7;
|
||||
|
@ -1,37 +1,84 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Returns list of unique items in a unit's inventory.
|
||||
* Items are cached if unit is ACE_player.
|
||||
* Author: mharis001, Blue, Brett Mayson
|
||||
* Returns list of unique items in the target's inventory.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 0: Target <OBJECT>
|
||||
* 1: Include magazines <NUMBER>
|
||||
* 0: No (default)
|
||||
* 1: Yes
|
||||
* 2: Only magazines
|
||||
*
|
||||
* Return Value:
|
||||
* Items <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [player] call ace_common_fnc_uniqueItems
|
||||
* [player, 2] call ace_common_fnc_uniqueItems
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_unit"];
|
||||
params ["_target", ["_includeMagazines", 0]];
|
||||
|
||||
private _fnc_getItems = {
|
||||
private _items = (getItemCargo uniformContainer _unit) select 0;
|
||||
_items append ((getItemCargo vestContainer _unit) select 0);
|
||||
_items append ((getItemCargo backpackContainer _unit) select 0);
|
||||
private _items = [];
|
||||
|
||||
private _inventoryItems = (getItemCargo uniformContainer _target) select 0;
|
||||
_inventoryItems append ((getItemCargo vestContainer _target) select 0);
|
||||
_inventoryItems append ((getItemCargo backpackContainer _target) select 0);
|
||||
|
||||
_items set [0, _inventoryItems];
|
||||
_items set [1, magazines _target];
|
||||
|
||||
_items arrayIntersect _items
|
||||
};
|
||||
|
||||
// Use cached items list if unit is ACE_player
|
||||
if (_unit isEqualTo ACE_player) then {
|
||||
// Cache items list if unit is ACE_player
|
||||
if (_target isEqualTo ACE_player) then {
|
||||
if (isNil QGVAR(uniqueItemsCache)) then {
|
||||
GVAR(uniqueItemsCache) = call _fnc_getItems;
|
||||
};
|
||||
+GVAR(uniqueItemsCache)
|
||||
} else {
|
||||
call _fnc_getItems;
|
||||
|
||||
switch (_includeMagazines) do {
|
||||
case 0: {
|
||||
GVAR(uniqueItemsCache) select 0
|
||||
};
|
||||
case 1: {
|
||||
(GVAR(uniqueItemsCache) select 1) + (GVAR(uniqueItemsCache) select 0)
|
||||
};
|
||||
case 2: {
|
||||
GVAR(uniqueItemsCache) select 1
|
||||
};
|
||||
};
|
||||
} else {
|
||||
if (_target isKindOf "CAManBase") then {
|
||||
private _items = call _fnc_getItems;
|
||||
|
||||
switch (_includeMagazines) do {
|
||||
case 0: {
|
||||
_items select 0
|
||||
};
|
||||
case 1: {
|
||||
(_items select 1) + (_items select 0)
|
||||
};
|
||||
case 2: {
|
||||
_items select 1
|
||||
};
|
||||
};
|
||||
} else {
|
||||
private _items = switch (_includeMagazines) do {
|
||||
case 0: {
|
||||
itemCargo _target
|
||||
};
|
||||
case 1: {
|
||||
(magazineCargo _target) + (itemCargo _target)
|
||||
};
|
||||
case 2: {
|
||||
magazineCargo _target
|
||||
};
|
||||
};
|
||||
|
||||
_items arrayIntersect _items
|
||||
};
|
||||
};
|
||||
|
@ -1,5 +1,6 @@
|
||||
private _category = format ["ACE %1", LLSTRING(DisplayName)];
|
||||
private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_colors)]];
|
||||
private _categoryColors = [_category, LSTRING(subcategory_colors)];
|
||||
private _categorySway = [_category, LSTRING(subcategory_sway)];
|
||||
|
||||
[
|
||||
QGVAR(checkPBOsAction),
|
||||
@ -87,7 +88,7 @@ private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_col
|
||||
QGVAR(epilepsyFriendlyMode),
|
||||
"CHECKBOX",
|
||||
[LSTRING(EpilepsyFriendlyMode), LSTRING(EpilepsyFriendlyModeTooltip)],
|
||||
format ["ACE %1", localize LSTRING(DisplayName)],
|
||||
_category,
|
||||
false,
|
||||
2
|
||||
] call CBA_fnc_addSetting;
|
||||
@ -96,7 +97,45 @@ private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_col
|
||||
QGVAR(progressBarInfo),
|
||||
"LIST",
|
||||
[LSTRING(progressBarInfoName), LSTRING(progressBarInfoDesc)],
|
||||
format ["ACE %1", localize LSTRING(DisplayName)],
|
||||
_category,
|
||||
[[0, 1, 2], [LSTRING(None), LSTRING(progressBarInfoPercentage), LSTRING(progressBarInfoTime)], 2],
|
||||
0
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(enableSway),
|
||||
"CHECKBOX",
|
||||
[LSTRING(enableSway), LSTRING(enableSway_Description)],
|
||||
_categorySway,
|
||||
true,
|
||||
1,
|
||||
{},
|
||||
true
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(swayFactor),
|
||||
"SLIDER",
|
||||
[LSTRING(SwayFactor), LSTRING(SwayFactor_Description)],
|
||||
_categorySway,
|
||||
[0, 5, 1, 2],
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(restedSwayFactor),
|
||||
"SLIDER",
|
||||
[LSTRING(RestedSwayFactor), LSTRING(RestedSwayFactor_Description)],
|
||||
_categorySway,
|
||||
[0, 5, 1, 2],
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(deployedSwayFactor),
|
||||
"SLIDER",
|
||||
[LSTRING(DeployedSwayFactor), LSTRING(DeployedSwayFactor_Description)],
|
||||
_categorySway,
|
||||
[0, 5, 1, 2],
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
@ -498,7 +498,7 @@
|
||||
<Chinesesimp>设定当玩家有错误的 PBO 时要如何处理。</Chinesesimp>
|
||||
<Czech>Nastavuje jakou akci provést pokud hráč nemá správné PBO.</Czech>
|
||||
<Polish>Określa akcję, która ma być podjęta, jeśli gracz nie ma właściwych PBO.</Polish>
|
||||
<Japanese>プレイヤーが不正規のPBOを所持している場合の動作を決定します。</Japanese>
|
||||
<Japanese>プレイヤーが不正規のPBOを所持している場合の動作を定義します。</Japanese>
|
||||
<Spanish>Define la accion a tomar si un jugador no tiene el PBO correcto</Spanish>
|
||||
<Italian>Definisce l'azione che verrà presa se il giocatore non ha gli stessi PBO.</Italian>
|
||||
<Russian>Определяет, какое действие будет предпринято, если игрок не имеет корректные PBO.</Russian>
|
||||
@ -1582,7 +1582,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_progressBarInfoDesc">
|
||||
<English>Controls extra information shown in progress bar.</English>
|
||||
<Japanese>プログレス バーへ表示される情報量を決定します。</Japanese>
|
||||
<Japanese>プログレス バーへ表示される情報量を制御します。</Japanese>
|
||||
<French>Définit quelles informations supplémentaires sont affichées dans la barre de progression.</French>
|
||||
<Russian>Устанавливает дополнительную информацию в индикаторе процесса.</Russian>
|
||||
<German>Kontrolliert zusätzliche Informationen beim Fortschrittsbalkens.</German>
|
||||
@ -1828,5 +1828,106 @@
|
||||
<Chinese>下方</Chinese>
|
||||
<Turkish>Alt</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_subcategory_sway">
|
||||
<English>Weapon Sway</English>
|
||||
<Japanese>手ぶれ</Japanese>
|
||||
<Korean>무기 흔들림</Korean>
|
||||
<French>Oscillation de l'arme</French>
|
||||
<Russian>Колебание оружия</Russian>
|
||||
<Spanish>Oscilación del arma</Spanish>
|
||||
<Italian>Oscillazione arma</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_EnableSway">
|
||||
<English>Enable Weapon Sway</English>
|
||||
<Japanese>手ぶれを有効化</Japanese>
|
||||
<Korean>무기 흔들림 추가</Korean>
|
||||
<French>Activer l'oscillation de l'arme</French>
|
||||
<Russian>Включить колебание оружия</Russian>
|
||||
<Spanish>Habilitar oscilación del arma</Spanish>
|
||||
<Italian>Abilita oscillazione arma</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_EnableSway_Description">
|
||||
<English>Enables weapon sway influenced by sway factors, such as stance, fatigue and medical condition.\nDisabling this setting will defer sway to vanilla or other mods.</English>
|
||||
<Japanese>姿勢、疲労、負傷状態などの手ぶれ要因に影響を受ける武器照準の揺れを有効にします。\nこの設定を無効にすると、手ぶれの揺れはバニラまたは他のMODの処理に任されます。</Japanese>
|
||||
<Korean>흔들림 계수, 자세, 피로도, 건강 상태 등의 요인에 영향을 받는 무기 흔들림을 활성화합니다.\n이 설정을 비활성화하면 바닐라 또는 다른 모드의 흔들림으로 대체됩니다.</Korean>
|
||||
<French>Active l'oscillation de l'arme influencé par les facteurs d'oscillation, tels que la position, la fatigue et l'état de santé.\nLa désactivation de ce paramètre reportera l'oscillation à vanilla ou à d'autres mods.</French>
|
||||
<Russian>Активируйте колебание оружия в зависимости от таких факторов, как стойка, усталость и состояние здоровья.\nОтключение этого параметра приведет к переносу раскачивания на vanilla или другие моды.</Russian>
|
||||
<Spanish>Habilita la oscilación del arma afectado por factores como la postura, la fatiga y la condición médica.\nDeshabilitar esta opción hará que el comportamiento de la oscilación venga definido por Vanilla o por otros mods.</Spanish>
|
||||
<Italian>Abilita l'oscillazione ACE, influenzata da fattori come postura, fatica e condizione medica.\nDisabilitare questa impostazione farà controllare l'oscillazione al gioco vanilla o altre mod.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SwayFactor">
|
||||
<English>Sway factor</English>
|
||||
<Spanish>Factor de balanceo de mira</Spanish>
|
||||
<German>Verwacklungsfaktor</German>
|
||||
<Japanese>手ぶれ因数</Japanese>
|
||||
<Chinesesimp>抖动系数</Chinesesimp>
|
||||
<Chinese>抖動因素</Chinese>
|
||||
<French>Facteur de tremblement</French>
|
||||
<Italian>Fattore di Oscillazione</Italian>
|
||||
<Polish>Czynnik kołysania</Polish>
|
||||
<Russian>Фактор колебания прицела</Russian>
|
||||
<Portuguese>Fator de Balanço de Mira</Portuguese>
|
||||
<Czech>Faktor kývání</Czech>
|
||||
<Korean>손떨림 정도</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway. Higher means more sway.</English>
|
||||
<Spanish>Afecta al la estabilidad de la mira. Más alto significa más balanceo</Spanish>
|
||||
<German>Beeinflusst, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung.</German>
|
||||
<Japanese>武器の手ぶれの大きさに影響します。値が高いほど、手ぶれが強くなります。</Japanese>
|
||||
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害。</Chinesesimp>
|
||||
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
|
||||
<French>Influe sur l'amplitude du tremblement de l'arme. Une valeur plus élevée signifie plus de tremblement.</French>
|
||||
<Italian>Influenza l'aumento di oscillazione dell'arma quando affaticato. Maggiore significa più oscillazione.</Italian>
|
||||
<Polish>Wpływa na poziom kołysania broni. Większa ilość znaczy większe kołysanie.</Polish>
|
||||
<Russian>Влияет на колебания прицела оружия. Чем выше - тем больше.</Russian>
|
||||
<Portuguese>Influencia a quantidade de balanço da mira da arma. Quanto maior, mais balanço.</Portuguese>
|
||||
<Czech>Ovlivňuje množství kývání zbraní. Vyšší znamená více kývání.</Czech>
|
||||
<Korean>손떨림의 정도를 정합니다. 높을 수록 많이 휘적입니다.</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_RestedSwayFactor">
|
||||
<English>Rested sway factor</English>
|
||||
<French>Facteur de balancement au repos</French>
|
||||
<Korean>휴식 시 손떨림 정도</Korean>
|
||||
<Portuguese>Fator de balanço de mira em repouso</Portuguese>
|
||||
<German>Verwacklungsfaktor, wenn aufgelegt</German>
|
||||
<Italian>Fattore di Oscillazione Appoggiato</Italian>
|
||||
<Japanese>静止依託時の手ぶれ係数</Japanese>
|
||||
<Russian>Коэффициент колебания прицела в состоянии покоя</Russian>
|
||||
<Spanish>Factor de oscilación apoyado</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_RestedSwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway while weapon is rested.</English>
|
||||
<French>Influence le degré de balancement de l'arme au repos.</French>
|
||||
<Korean>무기가 아무런 행동도 하지 않는 동안 무기가 흔들리는 정도를 정합니다.</Korean>
|
||||
<Portuguese>Influencia a quantidade de balanço de mira enquanto a arma está em repouso.</Portuguese>
|
||||
<German>Beeinflusst, wie ruhig man die Waffe hält, während sie aufgelegt ist.</German>
|
||||
<Italian>Determina la quantità di oscillazione dell'arma quando questa è appoggiata.</Italian>
|
||||
<Japanese>静止し壁などに依託している時の武器の手ぶれの大きさに影響します。</Japanese>
|
||||
<Russian>Влияет на величину колебания прицела оружия в состоянии покоя.</Russian>
|
||||
<Spanish>Afecta la cantidad de oscilación del arma cuando se está apoyado.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_DeployedSwayFactor">
|
||||
<English>Deployed sway factor</English>
|
||||
<French>Facteur de balancement déployé</French>
|
||||
<Korean>거치 시 손떨림 정도</Korean>
|
||||
<Portuguese>Fator de balanço de mira em posição de tiro</Portuguese>
|
||||
<German>Verwacklungsfaktor, wenn Zweibein aufgestellt ist.</German>
|
||||
<Italian>Fattore di Oscillazione su Bipode</Italian>
|
||||
<Japanese>接地展開時の手ぶれ係数</Japanese>
|
||||
<Russian>Коэффициент колебания прицела при развертывании</Russian>
|
||||
<Spanish>Factor de oscilación desplegado</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_DeployedSwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway while weapon is deployed.</English>
|
||||
<French>Influence le degré de balancement de l'arme déployée.</French>
|
||||
<Korean>무기를 거치하는 동안 무기를 흔드는 정도를 정합니다.</Korean>
|
||||
<Portuguese>Influencia a quantidade de balanço de mira enquanto a arma está em posição de tiro.</Portuguese>
|
||||
<German>Beeinflusst, wie ruhig man die Waffen hält, während das Zweibein aufgestellt ist.</German>
|
||||
<Italian>Determina la quantità di oscillazione dell'arma quando questa è stabilizzata usando il bipode.</Italian>
|
||||
<Japanese>武器の接地展開時の武器の手ぶれの大きさに影響します。</Japanese>
|
||||
<Russian>Влияет на величину колебания прицела оружия при его развертывании.</Russian>
|
||||
<Spanish>Afecta la cantidad de oscilación del arma cuando se está desplegado.</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,3 +0,0 @@
|
||||
[tools]
|
||||
pboProject_noBinConfig = true
|
||||
sqfvm_skipConfigChecks = true
|
@ -1,15 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
#include "\z\ace\addons\refuel\defines.hpp"
|
||||
|
||||
// Remove after next cup release
|
||||
#pragma hemtt flag pe23_ignore_has_include
|
||||
#if __has_include("\cup\CUP_Terrains_ACE_compat\config.bin")
|
||||
#define PATCH_SKIP "CUP_Terrains_ACE_compat"
|
||||
#endif
|
||||
|
||||
#ifdef PATCH_SKIP
|
||||
ACE_PATCH_NOT_LOADED(ADDON,PATCH_SKIP)
|
||||
#else
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
name = COMPONENT_NAME;
|
||||
@ -34,5 +25,3 @@ class CfgPatches {
|
||||
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#endif
|
||||
|
@ -148,5 +148,141 @@ class CfgVehicles {
|
||||
roles[]={"cargo"};
|
||||
};
|
||||
};
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l1", "hitera_l2", "hitera_l3", "hitera_l4", "hitera_l5",
|
||||
"hitera_l6", "hitera_l7", "hitera_l8", "hitera_r1", "hitera_r2",
|
||||
"hitera_r3", "hitera_r4", "hitera_r5", "hitera_r6", "hitera_r7",
|
||||
"hitera_r8", "hitera_t1", "hitera_t2", "hitera_t3", "hitera_t4",
|
||||
"hitera_t5", "hitera_t6", "hitera_t7", "hitera_t8", "hitera_fr1",
|
||||
"hitera_fr2", "hitera_fr3", "hitera_fr4", "hitera_fr5", "hitera_fr6",
|
||||
"hitera_fr7", "hitera_fr8", "hitera_fr9", "hitera_fl1", "hitera_fl2",
|
||||
"hitera_fl3", "hitera_fl4", "hitera_fl5"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {};
|
||||
};
|
||||
class CUP_T90_Base: Tank_F {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l1", "hitera_l2", "hitera_l3", "hitera_r1", "hitera_r2",
|
||||
"hitera_r3", "hitera_1_t_l", "hitera_1_t_r", "hitera_2_t_l",
|
||||
"hitera_2_t_r"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {};
|
||||
};
|
||||
class CUP_T90M_Base: Tank_F {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_t1", "hitera_t2", "hitera_t3", "hitera_t4", "hitera_t5",
|
||||
"hitera_t6", "hitera_t7", "hitera_t8", "hitera_t9", "hitera_t10",
|
||||
"hitera_t11", "hitera_t12", "hitera_t13", "hitera_t14", "hitera_t15",
|
||||
"hitera_t16", "hitera_t17", "hitera_t18", "hitera_t19", "hitera_t20",
|
||||
"hitera_t21", "hitera_f1", "hitera_f2", "hitera_f3", "hitera_f4",
|
||||
"hitera_f5", "hitera_f6", "hitera_f7", "hitera_s1", "hitera_s2",
|
||||
"hitera_s3", "hitera_s4", "hitera_s5", "hitera_s6", "hitera_s7",
|
||||
"hitera_s8", "hitera_s9", "hitera_s10", "hitera_s11", "hitera_s12",
|
||||
"hitera_t22", "hitera_t23", "hitera_t24", "hitera_t25", "hitera_t26",
|
||||
"hitera_t27", "hitera_t28", "hitera_t29", "hitera_t30", "hitera_t31",
|
||||
"hitera_t32", "hitera_t33"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"hitslat_left", "hitslat_right", "hitslat_turret_rear",
|
||||
"hitslat_turret_left", "hitslat_rear"
|
||||
};
|
||||
};
|
||||
|
||||
class CUP_T72_ACR_Base;
|
||||
class CUP_B_T72_CZ: CUP_T72_ACR_Base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_top_l1", "hitera_top_l2", "hitera_top_l3", "hitera_top_l4",
|
||||
"hitera_top_r1", "hitera_top_r2", "hitera_top_r3", "hitera_top_r4",
|
||||
"hitera_front_r1", "hitera_front_r2", "hitera_front_l1",
|
||||
"hitera_front_l2", "hitera_top_rear"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {};
|
||||
};
|
||||
|
||||
class CUP_Leopard2_Base;
|
||||
class CUP_Leopard2_ERA_Base: CUP_Leopard2_Base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_1", "hitera_2", "hitera_3", "hitera_4", "hitera_5", "hitera_6",
|
||||
"hitera_7", "hitera_8", "hitera_9", "hitera_10", "hitera_11", "hitera_12",
|
||||
"hitera_13", "hitera_14", "hitera_15", "hitera_16", "hitera_17", "hitera_18",
|
||||
"hitera_19", "hitera_20", "hitera_21", "hitera_22", "hitera_23", "hitera_24",
|
||||
"hitera_25", "hitera_26", "hitera_27", "hitera_28", "hitera_29", "hitera_30",
|
||||
"hitera_31", "hitera_32", "hitera_33", "hitera_34", "hitera_35", "hitera_36",
|
||||
"hitera_37", "hitera_38", "hitera_39", "hitera_40", "hitera_41", "hitera_42",
|
||||
"hitera_43", "hitera_44", "hitera_45", "hitera_46", "hitera_47"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {};
|
||||
};
|
||||
|
||||
class CUP_M1_Abrams_base;
|
||||
class CUP_M1A2_TUSK_base: CUP_M1_Abrams_base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l1", "hitera_l2", "hitera_l3", "hitera_l4", "hitera_r1",
|
||||
"hitera_r2", "hitera_r3", "hitera_r4"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"hitslat_rear"
|
||||
};
|
||||
};
|
||||
|
||||
class CUP_M1Abrams_Base;
|
||||
class CUP_M1Abrams_TUSK_Base: CUP_M1Abrams_Base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l01", "hitera_l02", "hitera_l03", "hitera_l04", "hitera_l05",
|
||||
"hitera_l06", "hitera_l07", "hitera_l08", "hitera_l09", "hitera_l10",
|
||||
"hitera_l11", "hitera_l12", "hitera_l13", "hitera_l14", "hitera_l15",
|
||||
"hitera_l16", "hitera_r01", "hitera_r02", "hitera_r03", "hitera_r04",
|
||||
"hitera_r05", "hitera_r06", "hitera_r07", "hitera_r08", "hitera_r09",
|
||||
"hitera_r10", "hitera_r11", "hitera_r12", "hitera_r13", "hitera_r14",
|
||||
"hitera_r15", "hitera_r16"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"hitslat_rear"
|
||||
};
|
||||
};
|
||||
|
||||
class CUP_M1Abrams_A2_Base;
|
||||
class CUP_M1Abrams_A2_TUSK_Base: CUP_M1Abrams_A2_Base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l01", "hitera_l02", "hitera_l03", "hitera_l04", "hitera_l05",
|
||||
"hitera_l06", "hitera_l07", "hitera_l08", "hitera_l09", "hitera_l10",
|
||||
"hitera_l11", "hitera_l12", "hitera_l13", "hitera_l14", "hitera_l15",
|
||||
"hitera_l16", "hitera_l17", "hitera_l18", "hitera_l19", "hitera_l20",
|
||||
"hitera_r01", "hitera_r02", "hitera_r03", "hitera_r04", "hitera_r05",
|
||||
"hitera_r06", "hitera_r07", "hitera_r08", "hitera_r09", "hitera_r10",
|
||||
"hitera_r11", "hitera_r12", "hitera_r13", "hitera_r14", "hitera_r15",
|
||||
"hitera_r16", "hitera_r17", "hitera_r18", "hitera_r19", "hitera_r20"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"hitslat_rear"
|
||||
};
|
||||
};
|
||||
|
||||
class CUP_M1A2Abrams_Base;
|
||||
class CUP_M1A2Abrams_TUSK_Base: CUP_M1A2Abrams_Base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l01", "hitera_l02", "hitera_l03", "hitera_l04", "hitera_l05",
|
||||
"hitera_l06", "hitera_l07", "hitera_l08", "hitera_l09", "hitera_l10",
|
||||
"hitera_l11", "hitera_l12", "hitera_l13", "hitera_l14", "hitera_l15",
|
||||
"hitera_l16", "hitera_r01", "hitera_r02", "hitera_r03", "hitera_r04",
|
||||
"hitera_r05", "hitera_r06", "hitera_r07", "hitera_r08", "hitera_r09",
|
||||
"hitera_r10", "hitera_r11", "hitera_r12", "hitera_r13", "hitera_r14",
|
||||
"hitera_r15", "hitera_r16"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"hitslat_rear"
|
||||
};
|
||||
};
|
||||
class CUP_M1A2Abrams_TUSK_II_Base: CUP_M1A2Abrams_TUSK_Base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"hitera_l01", "hitera_l02", "hitera_l03", "hitera_l04", "hitera_l05",
|
||||
"hitera_l06", "hitera_l07", "hitera_l08", "hitera_l09", "hitera_l10",
|
||||
"hitera_l11", "hitera_l12", "hitera_l13", "hitera_l14", "hitera_l15",
|
||||
"hitera_l16", "hitera_l17", "hitera_l18", "hitera_l19", "hitera_l20",
|
||||
"hitera_r01", "hitera_r02", "hitera_r03", "hitera_r04", "hitera_r05",
|
||||
"hitera_r06", "hitera_r07", "hitera_r08", "hitera_r09", "hitera_r10",
|
||||
"hitera_r11", "hitera_r12", "hitera_r13", "hitera_r14", "hitera_r15",
|
||||
"hitera_r16", "hitera_r17", "hitera_r18", "hitera_r19", "hitera_r20"
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,3 +0,0 @@
|
||||
[tools]
|
||||
pboProject_noBinConfig = true
|
||||
sqfvm_skipConfigChecks = true
|
@ -1,14 +1,5 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Remove after next cup release
|
||||
#pragma hemtt flag pe23_ignore_has_include
|
||||
#if __has_include("\cup\CUP_Vehicles_ACE_compat\config.bin")
|
||||
#define PATCH_SKIP "CUP_Vehicles_ACE_compat"
|
||||
#endif
|
||||
|
||||
#ifdef PATCH_SKIP
|
||||
ACE_PATCH_NOT_LOADED(ADDON,PATCH_SKIP)
|
||||
#else
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
name = COMPONENT_NAME;
|
||||
@ -29,5 +20,3 @@ class CfgPatches {
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
|
||||
#endif
|
||||
|
@ -1,3 +0,0 @@
|
||||
[tools]
|
||||
pboProject_noBinConfig = true
|
||||
sqfvm_skipConfigChecks = true
|
@ -128,8 +128,8 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
|
||||
class AT_01_base_F;
|
||||
class CUP_Metis_Base: AT_01_base_F {
|
||||
class StaticATWeapon;
|
||||
class CUP_Metis_Base: StaticATWeapon {
|
||||
class ace_csw {
|
||||
enabled = 1;
|
||||
proxyWeapon = "CUP_proxy_AT13";
|
||||
@ -142,7 +142,6 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
|
||||
class StaticATWeapon;
|
||||
class CUP_TOW_TriPod_base: StaticATWeapon {
|
||||
class ace_csw {
|
||||
enabled = 1;
|
||||
|
@ -15,7 +15,7 @@ class CfgWeapons {
|
||||
deployTime = 20;
|
||||
pickupTime = 25;
|
||||
class assembleTo {
|
||||
ace_csw_mortarBaseplate = "CUP_O_2b14_82mm_RU";
|
||||
ace_csw_mortarBaseplate = "CUP_I_2b14_82mm_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -31,7 +31,7 @@ class CfgWeapons {
|
||||
picture = "\CUP\Weapons\CUP_Weapons_StaticWeapons\M252\data\ui\icomap_mortar_m251_ca.paa";
|
||||
class ace_csw: ace_csw {
|
||||
class assembleTo {
|
||||
ace_csw_mortarBaseplate = "CUP_B_M252_US";
|
||||
ace_csw_mortarBaseplate = "CUP_I_M252_AAF";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -42,7 +42,7 @@ class CfgWeapons {
|
||||
picture = "\CUP\Weapons\CUP_Weapons_StaticWeapons\M252\data\ui\icomap_mortar_m251_ca.paa";
|
||||
class ace_csw: ace_csw {
|
||||
class assembleTo {
|
||||
ace_csw_mortarBaseplate = "CUP_B_L16A2_BAF_MPT";
|
||||
ace_csw_mortarBaseplate = "CUP_I_L16A2_AAF";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -58,8 +58,8 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_m3Tripod = "CUP_B_M2StaticMG_US";
|
||||
ace_csw_m3TripodLow = "CUP_B_M2StaticMG_MiniTripod_US";
|
||||
ace_csw_m3Tripod = "CUP_I_M2StaticMG_AAF";
|
||||
ace_csw_m3TripodLow = "CUP_I_M2StaticMG_MiniTripod_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -81,8 +81,8 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_kordTripod = "CUP_O_DSHKM_ChDKZ";
|
||||
ace_csw_kordTripodLow = "CUP_O_DSHkM_MiniTriPod_ChDKZ";
|
||||
ace_csw_kordTripod = "CUP_I_DSHKM_AAF";
|
||||
ace_csw_kordTripodLow = "CUP_I_DSHKM_MiniTriPod_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -104,8 +104,8 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_kordTripod = "CUP_O_KORD_high_RU";
|
||||
ace_csw_kordTripodLow = "CUP_O_KORD_RU";
|
||||
ace_csw_kordTripod = "CUP_I_KORD_high_AAF";
|
||||
ace_csw_kordTripodLow = "CUP_I_KORD_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -127,7 +127,7 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_sag30Tripod = "CUP_O_AGS_RU";
|
||||
ace_csw_sag30Tripod = "CUP_I_AGS_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -149,7 +149,7 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_m3TripodLow = "CUP_B_MK19_TriPod_US";
|
||||
ace_csw_m3TripodLow = "CUP_I_MK19_TriPod_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -168,7 +168,7 @@ class CfgWeapons {
|
||||
type = "mount";
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
deploy = "CUP_O_Metis_RU";
|
||||
deploy = "CUP_I_Metis_AAF";
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 300;
|
||||
@ -186,7 +186,7 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_m220Tripod = "CUP_B_TOW_TriPod_US";
|
||||
ace_csw_m220Tripod = "CUP_I_TOW_TriPod_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -200,7 +200,7 @@ class CfgWeapons {
|
||||
class CUP_TOW2_carry: CUP_TOW_carry {
|
||||
class ace_csw: ace_csw {
|
||||
class assembleTo {
|
||||
ace_csw_m220Tripod = "CUP_B_TOW2_TriPod_US";
|
||||
ace_csw_m220Tripod = "CUP_I_TOW2_TriPod_AAF";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -216,7 +216,7 @@ class CfgWeapons {
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
ace_csw_spg9Tripod = "CUP_B_SPG9_CDF";
|
||||
ace_csw_spg9Tripod = "CUP_I_SPG9_AAF";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -287,4 +287,3 @@ class CfgWeapons {
|
||||
magazineReloadTime = 0.5;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -4,70 +4,132 @@
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_AGS30_displayName">
|
||||
<English>[CSW] AGS30 Belt</English>
|
||||
<Japanese>[CSW] AGS30 ベルト</Japanese>
|
||||
<Russian>[CSW] Лента AGS 30</Russian>
|
||||
<Korean>[CSW] AGS-30 벨트</Korean>
|
||||
<Spanish>[CSW] Cinta de AGS30</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_MK19_displayName">
|
||||
<English>[CSW] MK19 Belt</English>
|
||||
<Japanese>[CSW] Mk19 ベルト</Japanese>
|
||||
<Russian>[CSW] Лента Mk19</Russian>
|
||||
<Korean>[CSW] Mk.19 벨트</Korean>
|
||||
<Spanish>[CSW] Cinta de MK19</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW_displayName">
|
||||
<English>[CSW] TOW Tube</English>
|
||||
<Japanese>[CSW] TOW チューブ</Japanese>
|
||||
<Russian>[CSW] Туба TOW</Russian>
|
||||
<Korean>[CSW] TOW 튜브</Korean>
|
||||
<Spanish>[CSW] Tubo de TOW</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW2_displayName">
|
||||
<English>[CSW] TOW2 Tube</English>
|
||||
<Japanese>[CSW] TOW2 チューブ</Japanese>
|
||||
<Russian>[CSW] Туба TOW-2</Russian>
|
||||
<Korean>[CSW] TOW2 튜브</Korean>
|
||||
<Spanish>[CSW] Tubo de TOW2</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_PG9_displayName">
|
||||
<English>[CSW] PG-9 Round</English>
|
||||
<Japanese>[CSW] PG-9 砲弾</Japanese>
|
||||
<Russian>[CSW] Снаряд ПГ-9</Russian>
|
||||
<Korean>[CSW] PG-9 대전차고폭탄</Korean>
|
||||
<Spanish>[CSW] Carga de PG-9</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_OG9_displayName">
|
||||
<English>[CSW] OG-9 Round</English>
|
||||
<Japanese>[CSW] OG-9 砲弾</Japanese>
|
||||
<Russian>[CSW] Снаряд OГ-9</Russian>
|
||||
<Korean>[CSW] OG-9 고폭파편탄</Korean>
|
||||
<Spanish>[CSW] Carga de OG-9</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M1HE_displayName">
|
||||
<English>[CSW] M1 HE</English>
|
||||
<Japanese>[CSW] M1 榴弾</Japanese>
|
||||
<Russian>[CSW] M1 HE</Russian>
|
||||
<Korean>[CSW] M1 고폭탄</Korean>
|
||||
<French>[CSW] M1 HE</French>
|
||||
<Spanish>[CSW] HE de M1</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M84Smoke_displayName">
|
||||
<English>[CSW] M84 Smoke</English>
|
||||
<Japanese>[CSW] M84 白煙弾</Japanese>
|
||||
<Russian>[CSW] M84 Дымовая</Russian>
|
||||
<Korean>[CSW] M84 연막탄</Korean>
|
||||
<French>[CSW] M84 Fumigène</French>
|
||||
<Spanish>[CSW] Humo M84</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M60A2_displayName">
|
||||
<English>[CSW] M60A2 WP</English>
|
||||
<Japanese>[CSW] M60A2 白リン弾</Japanese>
|
||||
<Russian>[CSW] M60A2 WP</Russian>
|
||||
<Korean>[CSW] M60A2 백린연막탄</Korean>
|
||||
<French>[CSW] M60A2 WP</French>
|
||||
<Spanish>[CSW] M60A2 WP</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M67AT_displayName">
|
||||
<English>[CSW] M67 AT Laser Guided</English>
|
||||
<Japanese>[CSW] M67 対戦車レーザー誘導弾</Japanese>
|
||||
<Russian>[CSW] M67 AT Laser Guided</Russian>
|
||||
<Korean>[CSW] M67 레이저유도 대전차탄</Korean>
|
||||
<French>[CSW] M67 AT Guidé laser</French>
|
||||
<Spanish>[CSW] AT Guiado por Láser M67</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M314Illum_displayName">
|
||||
<English>[CSW] M314 Illumination</English>
|
||||
<Japanese>[CSW] M314 照明弾</Japanese>
|
||||
<Russian>[CSW] M314 Осветительная</Russian>
|
||||
<Korean>[CSW] M314 조명탄</Korean>
|
||||
<French>[CSW] M314 Illumination</French>
|
||||
<Spanish>[CSW] Iluminación M314</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_3OF56_displayName">
|
||||
<English>[CSW] 3OF56 HE</English>
|
||||
<Japanese>[CSW] 3OF56 榴弾</Japanese>
|
||||
<Russian>[CSW] 3OF56 HE</Russian>
|
||||
<Korean>[CSW] 3OF56 고폭탄</Korean>
|
||||
<French>[CSW] 3OF56 HE</French>
|
||||
<Spanish>[CSW] HE de 3OF56</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_3OF69M_displayName">
|
||||
<English>[CSW] 3OF69M Laser Guided</English>
|
||||
<Japanese>[CSW] 3OF69M レーザー誘導弾</Japanese>
|
||||
<Russian>[CSW] 3OF69M Laser Guided</Russian>
|
||||
<Korean>[CSW] 3OF69M 레이저유도탄</Korean>
|
||||
<French>[CSW] 3OF69M Guidé laser</French>
|
||||
<Spanish>[CSW] 3OF69M Guiado por Láser</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmWP_displayName">
|
||||
<English>[CSW] 122mm WP</English>
|
||||
<Japanese>[CSW] 122mm 白リン弾</Japanese>
|
||||
<Russian>[CSW] 122mm WP</Russian>
|
||||
<Korean>[CSW] 122mm 백린탄</Korean>
|
||||
<French>[CSW] 122mm WP</French>
|
||||
<Spanish>[CSW] WP de 122mm</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmSmoke_displayName">
|
||||
<English>[CSW] D-462 Smoke</English>
|
||||
<Japanese>[CSW] D-462 白煙弾</Japanese>
|
||||
<Russian>[CSW] D-462 Дымовая</Russian>
|
||||
<Korean>[CSW] D-462 연막탄</Korean>
|
||||
<French>[CSW] D-462 Fumigène</French>
|
||||
<Spanish>[CSW] Humo D-462</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmIllum_displayName">
|
||||
<English>[CSW] S-463 Illumination</English>
|
||||
<Japanese>[CSW] S-463 照明弾</Japanese>
|
||||
<Russian>[CSW] S-463 Осветительная</Russian>
|
||||
<Korean>[CSW] S-463 조명탄</Korean>
|
||||
<French>[CSW] S-463 Eclairante</French>
|
||||
<Spanish>[CSW] Iluminación S-463</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmAT_displayName">
|
||||
<English>[CSW] BK-6M HEAT</English>
|
||||
<Japanese>[CSW] BK-6M HEAT弾</Japanese>
|
||||
<Russian>[CSW] BK-6M HEAT</Russian>
|
||||
<Korean>[CSW] BK-6M 대전차고폭탄</Korean>
|
||||
<French>[CSW] BK-6M HEAT</French>
|
||||
<Spanish>[CSW] BK-6M HEAT</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -107,12 +107,12 @@ class CfgWeapons {
|
||||
displayName = SUBCSTRING(CUP_NVG_GPNVG_tan_WP);
|
||||
NVG_WP_PRESET;
|
||||
};
|
||||
class CUP_GPNVG_green_WP: CUP_NVG_GPNVG_green {
|
||||
displayName = SUBCSTRING(CUP_GPNVG_green_WP);
|
||||
class CUP_NVG_GPNVG_green_WP: CUP_NVG_GPNVG_green {
|
||||
displayName = SUBCSTRING(CUP_NVG_GPNVG_green_WP);
|
||||
NVG_WP_PRESET;
|
||||
};
|
||||
class CUP_GPNVG_winter_WP: CUP_NVG_GPNVG_winter {
|
||||
displayName = SUBCSTRING(CUP_GPNVG_winter_WP);
|
||||
class CUP_NVG_GPNVG_winter_WP: CUP_NVG_GPNVG_winter {
|
||||
displayName = SUBCSTRING(CUP_NVG_GPNVG_winter_WP);
|
||||
NVG_WP_PRESET;
|
||||
};
|
||||
};
|
||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {
|
||||
"CUP_NVG_PVS14_WP", "CUP_NVG_PVS15_black_WP", "CUP_NVG_PVS15_green_WP", "CUP_NVG_PVS15_tan_WP", "CUP_NVG_PVS15_winter_WP",
|
||||
"CUP_NVG_GPNVG_black_WP", "CUP_NVG_GPNVG_tan_WP", "CUP_GPNVG_green_WP", "CUP_GPNVG_winter_WP"
|
||||
"CUP_NVG_GPNVG_black_WP", "CUP_NVG_GPNVG_tan_WP", "CUP_NVG_GPNVG_green_WP", "CUP_NVG_GPNVG_winter_WP"
|
||||
};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {
|
||||
|
@ -10,76 +10,89 @@
|
||||
<Korean>AN/PVS-14 (백색광)</Korean>
|
||||
<French>AN/PVS-14 (WP)</French>
|
||||
<Russian>AN/PVS-14 (БФ)</Russian>
|
||||
<Spanish>AN/PVS-14 (WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_black_WP">
|
||||
<English>AN/PVS-15 (Black, WP)</English>
|
||||
<Japanese>AN/PVS-15 (グリーン, 白色蛍光)</Japanese>
|
||||
<Italian>AN/PVS-15 (Verde, FB)</Italian>
|
||||
<Polish>AN/PVS-15 (Zielone, WP)</Polish>
|
||||
<German>AN/PVS-15 (grün, WP)</German>
|
||||
<Korean>AN/PVS-15 (녹색, 백색광)</Korean>
|
||||
<French>AN/PVS-15 (vertes, WP)</French>
|
||||
<Russian>AN/PVS-15 (Зелёный, БФ)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_green_WP">
|
||||
<English>AN/PVS-15 (Green, WP)</English>
|
||||
<Japanese>AN/PVS-15 (ブラック、白色蛍光)</Japanese>
|
||||
<Italian>AN/PVS-15 (Nero, FB)</Italian>
|
||||
<Polish>AN/PVS-15 (Czarne, WP)</Polish>
|
||||
<German>AN/PVS-15 (Schwarz, WP)</German>
|
||||
<Korean>AN/PVS-15 (검정, 백색광)</Korean>
|
||||
<French>AN/PVS-15 (noires, WP)</French>
|
||||
<French>AN/PVS-15 (Noires, WP)</French>
|
||||
<Russian>AN/PVS-15 (Чёрный, БФ)</Russian>
|
||||
<Spanish>AN/PVS-15 (Negras, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_green_WP">
|
||||
<English>AN/PVS-15 (Green, WP)</English>
|
||||
<Japanese>AN/PVS-15 (グリーン, 白色蛍光)</Japanese>
|
||||
<Italian>AN/PVS-15 (Verde, FB)</Italian>
|
||||
<Polish>AN/PVS-15 (Zielone, WP)</Polish>
|
||||
<German>AN/PVS-15 (Grün, WP)</German>
|
||||
<Korean>AN/PVS-15 (녹색, 백색광)</Korean>
|
||||
<French>AN/PVS-15 (Vertes, WP)</French>
|
||||
<Russian>AN/PVS-15 (Зелёный, БФ)</Russian>
|
||||
<Spanish>AN/PVS-15 (Verdes, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_tan_WP">
|
||||
<English>AN/PVS-15 (Tan, WP)</English>
|
||||
<Japanese>AN/PVS-15 (タン, 白色蛍光)</Japanese>
|
||||
<Italian>AN/PVS-15 (Marroncina, FB)</Italian>
|
||||
<Polish>AN/PVS-15 (jasnobrązowa, WP)</Polish>
|
||||
<German>AN/PVS-15 (hellbraun, WP)</German>
|
||||
<Polish>AN/PVS-15 (Jasnobrązowa, WP)</Polish>
|
||||
<German>AN/PVS-15 (Hellbraun, WP)</German>
|
||||
<Korean>AN/PVS-15 (황갈색, 백색광)</Korean>
|
||||
<French>AN/PVS-15 (marron clair, WP)</French>
|
||||
<Russian>AN/PVS-15 (желтовато-коричневый, БФ)</Russian>
|
||||
<French>AN/PVS-15 (Marron clair, WP)</French>
|
||||
<Russian>AN/PVS-15 (Желтовато-коричневый, БФ)</Russian>
|
||||
<Spanish>AN/PVS-15 (Marrones, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_winter_WP">
|
||||
<English>AN/PVS-15 (Winter, WP)</English>
|
||||
<Japanese>AN/PVS-15 (冬季迷彩, WP)</Japanese>
|
||||
<Korean>AN/PVS-15 (설상, WP)</Korean>
|
||||
<Korean>AN/PVS-15 (설상, 백색광)</Korean>
|
||||
<Russian>AN/PVS-15 (Белый, БФ)</Russian>
|
||||
<French>AN/PVS-15 (Blanc, WP)</French>
|
||||
<Spanish>AN/PVS-15 (Blancas, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_black_WP">
|
||||
<English>GPNVG (Black, WP)</English>
|
||||
<Japanese>GPNVG (グリーン, 白色蛍光)</Japanese>
|
||||
<Italian>GPNVG (Verde, FB)</Italian>
|
||||
<Polish>GPNVG (Zielone, WP)</Polish>
|
||||
<German>GPNVG (grün, WP)</German>
|
||||
<Korean>GPNVG (녹색, 백색광)</Korean>
|
||||
<French>GPNVG (vertes, WP)</French>
|
||||
<Russian>GPNVG (Зелёный, БФ)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_tan_WP">
|
||||
<English>GPNVG (Tan, WP)</English>
|
||||
<Japanese>GPNVG (タン, 白色蛍光)</Japanese>
|
||||
<Italian>GPNVG (Marroncina, FB)</Italian>
|
||||
<Polish>GPNVG (jasnobrązowa, WP)</Polish>
|
||||
<German>GPNVG (hellbraun, WP)</German>
|
||||
<Korean>GPNVG (황갈색, 백색광)</Korean>
|
||||
<French>GPNVG (marron clair, WP)</French>
|
||||
<Russian>GPNVG (желтовато-коричневый, БФ)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_GPNVG_green_WP">
|
||||
<English>GPNVG (Green, WP)</English>
|
||||
<Japanese>GPNVG (ブラック、白色蛍光)</Japanese>
|
||||
<Italian>GPNVG (Nero, FB)</Italian>
|
||||
<Polish>GPNVG (Czarne, WP)</Polish>
|
||||
<German>GPNVG (Schwarz, WP)</German>
|
||||
<Korean>GPNVG (검정, 백색광)</Korean>
|
||||
<French>GPNVG (noires, WP)</French>
|
||||
<French>GPNVG (Noires, WP)</French>
|
||||
<Russian>GPNVG (Чёрный, БФ)</Russian>
|
||||
<Spanish>GPNVG (Negras, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_GPNVG_winter_WP">
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_tan_WP">
|
||||
<English>GPNVG (Tan, WP)</English>
|
||||
<Japanese>GPNVG (タン, 白色蛍光)</Japanese>
|
||||
<Italian>GPNVG (Marroncina, FB)</Italian>
|
||||
<Polish>GPNVG (Jasnobrązowa, WP)</Polish>
|
||||
<German>GPNVG (Hellbraun, WP)</German>
|
||||
<Korean>GPNVG (황갈색, 백색광)</Korean>
|
||||
<French>GPNVG (Marron clair, WP)</French>
|
||||
<Russian>GPNVG (Желтовато-коричневый, БФ)</Russian>
|
||||
<Spanish>GPNVG (Marrones, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_green_WP">
|
||||
<English>GPNVG (Green, WP)</English>
|
||||
<Japanese>GPNVG (グリーン, 白色蛍光)</Japanese>
|
||||
<Italian>GPNVG (Verde, FB)</Italian>
|
||||
<Polish>GPNVG (Zielone, WP)</Polish>
|
||||
<German>GPNVG (Grün, WP)</German>
|
||||
<Korean>GPNVG (녹색, 백색광)</Korean>
|
||||
<French>GPNVG (Vertes, WP)</French>
|
||||
<Russian>GPNVG (Зелёный, БФ)</Russian>
|
||||
<Spanish>GPNVG (Verdes, WP)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_winter_WP">
|
||||
<English>GPNVG (Winter, WP)</English>
|
||||
<Japanese>GPNVG (冬季迷彩, WP)</Japanese>
|
||||
<Korean>GPNVG (설상, WP)</Korean>
|
||||
<Korean>GPNVG (설상, 백색광)</Korean>
|
||||
<Russian>AN/PVS-15 (Белый, БФ)</Russian>
|
||||
<French>GPNVG (Blanc, WP)</French>
|
||||
<Spanish>GPNVG (Blancas, WP)</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,14 +1,5 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Remove after next cup release
|
||||
#pragma hemtt flag pe23_ignore_has_include
|
||||
#if __has_include("\cup\CUP_Weapons_ACE_compat\config.bin")
|
||||
#define PATCH_SKIP "CUP_Weapons_ACE_compat"
|
||||
#endif
|
||||
|
||||
#ifdef PATCH_SKIP
|
||||
ACE_PATCH_NOT_LOADED(ADDON,PATCH_SKIP)
|
||||
#else
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
name = COMPONENT_NAME;
|
||||
@ -24,8 +15,6 @@ class CfgPatches {
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#endif
|
||||
|
@ -434,7 +434,11 @@ class CfgVehicles {
|
||||
"era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint",
|
||||
"era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint",
|
||||
"era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint",
|
||||
"era_31_hitpoint", "era_32_hitpoint"
|
||||
"era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint", "era_35_hitpoint", "era_36_hitpoint",
|
||||
"era_37_hitpoint", "era_38_hitpoint", "era_39_hitpoint", "era_40_hitpoint", "era_41_hitpoint", "era_42_hitpoint",
|
||||
"era_43_hitpoint", "era_44_hitpoint", "era_45_hitpoint", "era_46_hitpoint", "era_47_hitpoint", "era_48_hitpoint",
|
||||
"era_49_hitpoint", "era_50_hitpoint", "era_58_hitpoint", "era_59_hitpoint", "era_60_hitpoint", "era_61_hitpoint",
|
||||
"era_62_hitpoint", "era_63_hitpoint", "era_64_hitpoint", "era_65_hitpoint", "era_66_hitpoint", "era_67_hitpoint"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"SLAT_51_hitpoint", "SLAT_52_hitpoint", "SLAT_53_hitpoint",
|
||||
@ -470,6 +474,9 @@ class CfgVehicles {
|
||||
"era_43_hitpoint", "era_44_hitpoint", "era_45_hitpoint", "era_46_hitpoint", "era_47_hitpoint", "era_48_hitpoint",
|
||||
"era_49_hitpoint", "era_50_hitpoint"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"slat_51_hitpoint", "slat_52_hitpoint", "slat_53_hitpoint", "slat_54_hitpoint"
|
||||
};
|
||||
};
|
||||
class rhs_t90am_tv: rhs_t90_tv {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
@ -483,7 +490,7 @@ class CfgVehicles {
|
||||
"era_43_hitpoint", "era_44_hitpoint", "era_45_hitpoint", "era_46_hitpoint", "era_47_hitpoint", "era_48_hitpoint",
|
||||
"era_49_hitpoint", "era_50_hitpoint", "era_51_hitpoint", "era_52_hitpoint", "era_53_hitpoint", "era_54_hitpoint",
|
||||
"era_55_hitpoint", "era_56_hitpoint", "era_57_hitpoint", "era_58_hitpoint", "era_59_hitpoint", "era_60_hitpoint",
|
||||
"era_51_hitpoint", "era_62_hitpoint", "era_63_hitpoint", "era_64_hitpoint", "era_65_hitpoint", "era_66_hitpoint"
|
||||
"era_61_hitpoint", "era_62_hitpoint", "era_63_hitpoint", "era_64_hitpoint", "era_65_hitpoint", "era_66_hitpoint"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"SLAT_18_hitpoint", "SLAT_19_hitpoint", "SLAT_20_hitpoint", "SLAT_21_hitpoint",
|
||||
@ -492,10 +499,31 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
class rhs_t90sm_tv: rhs_t90am_tv {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"era_1_hitpoint", "era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint",
|
||||
"era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint",
|
||||
"era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint",
|
||||
"era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint",
|
||||
"era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint",
|
||||
"era_21_hitpoint", "era_22_hitpoint", "era_24_hitpoint", "era_25_hitpoint",
|
||||
"era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint",
|
||||
"era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint",
|
||||
"era_35_hitpoint", "era_36_hitpoint", "era_37_hitpoint", "era_38_hitpoint",
|
||||
"era_39_hitpoint", "era_40_hitpoint", "era_41_hitpoint", "era_42_hitpoint",
|
||||
"era_43_hitpoint", "era_44_hitpoint", "era_45_hitpoint", "era_46_hitpoint",
|
||||
"era_47_hitpoint", "era_48_hitpoint", "era_49_hitpoint", "era_50_hitpoint",
|
||||
"era_26_hitpoint", "era_55_hitpoint", "era_56_hitpoint", "era_57_hitpoint",
|
||||
"era_58_hitpoint", "era_59_hitpoint", "era_60_hitpoint", "era_61_hitpoint",
|
||||
"era_62_hitpoint", "era_63_hitpoint", "era_64_hitpoint", "era_65_hitpoint",
|
||||
"era_66_hitpoint", "era_23_hitpoint"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"SLAT_23_hitpoint", "SLAT_26_hitpoint", "SLAT_51_hitpoint", "SLAT_52_hitpoint",
|
||||
"SLAT_53_hitpoint", "SLAT_54_hitpoint", "SLAT_55_hitpoint", "SLAT_56_hitpoint",
|
||||
"SLAT_57_hitpoint"
|
||||
"slat_23_hitpoint", "slat_26_hitpoint", "slat_51_hitpoint",
|
||||
"slat_52_hitpoint", "slat_53_hitpoint", "slat_54_hitpoint",
|
||||
"slat_55_hitpoint", "slat_56_hitpoint", "slat_57_hitpoint",
|
||||
"slat_18_hitpoint", "slat_19_hitpoint", "slat_20_hitpoint",
|
||||
"slat_21_hitpoint", "slat_22_hitpoint", "slat_24_hitpoint",
|
||||
"slat_25_hitpoint"
|
||||
};
|
||||
};
|
||||
|
||||
@ -539,6 +567,35 @@ class CfgVehicles {
|
||||
"era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint", "era_35_hitpoint", "era_36_hitpoint"
|
||||
};
|
||||
};
|
||||
class rhs_t80um: rhs_t80u {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"era_1_hitpoint", "era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint",
|
||||
"era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint",
|
||||
"era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint",
|
||||
"era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint",
|
||||
"era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint",
|
||||
"era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint", "era_35_hitpoint", "era_36_hitpoint"
|
||||
};
|
||||
};
|
||||
|
||||
class rhs_t15_base;
|
||||
class rhs_t15_tv: rhs_t15_base {
|
||||
EGVAR(vehicle_damage,eraHitpoints)[] = {
|
||||
"era_1_hitpoint", "era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint",
|
||||
"era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint",
|
||||
"era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint",
|
||||
"era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint",
|
||||
"era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint",
|
||||
"era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint",
|
||||
"era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint",
|
||||
"era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint",
|
||||
"era_33_hitpoint", "era_34_hitpoint", "era_35_hitpoint", "era_36_hitpoint",
|
||||
"era_37_hitpoint"
|
||||
};
|
||||
EGVAR(vehicle_damage,slatHitpoints)[] = {
|
||||
"slat_38_hitpoint", "slat_39_hitpoint", "slat_40_hitpoint", "slat_41_hitpoint"
|
||||
};
|
||||
};
|
||||
|
||||
// Wirecutter Backpacks
|
||||
class rhs_assault_umbts;
|
||||
|
@ -5,7 +5,6 @@ class CfgVehicles {
|
||||
class StaticGrenadeLauncher;
|
||||
|
||||
class rhs_SPG9_base: AT_01_base_F {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ACE_CSW {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(rhs_weap_SPG9);
|
||||
@ -26,7 +25,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class rhs_Kornet_Base: AT_01_base_F {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ACE_CSW {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(rhs_weap_9K133_launcher);
|
||||
@ -40,7 +38,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class rhs_Metis_Base: AT_01_base_F {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ACE_CSW {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(rhs_weap_9K115_2_launcher);
|
||||
@ -54,7 +51,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class rhs_2b14_82mm_Base: StaticMortar {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ACE_CSW {
|
||||
enabled = 1;
|
||||
magazineLocation = "";
|
||||
@ -99,7 +95,6 @@ class CfgVehicles {
|
||||
};
|
||||
|
||||
class RHS_AGS30_TriPod_base: StaticGrenadeLauncher {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ACE_CSW {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(rhs_weap_AGS30);
|
||||
|
@ -1,7 +1,6 @@
|
||||
class CfgVehicles {
|
||||
class StaticMGWeapon;
|
||||
class rhs_DSHKM_base: StaticMGWeapon {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ACE_CSW {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(rhs_weap_DSHKM);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user