mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into pr/9758
This commit is contained in:
commit
33999a00e4
10
.github/release-drafter.yml
vendored
10
.github/release-drafter.yml
vendored
@ -11,11 +11,10 @@ sort-direction: ascending
|
|||||||
categories:
|
categories:
|
||||||
- title: '**ADDED:**'
|
- title: '**ADDED:**'
|
||||||
labels:
|
labels:
|
||||||
- 'kind/feature request'
|
- 'kind/feature'
|
||||||
- 'kind/added feature'
|
|
||||||
- title: '**FIXED:**'
|
- title: '**FIXED:**'
|
||||||
labels:
|
labels:
|
||||||
- 'kind/bug fix'
|
- 'kind/bug-fix'
|
||||||
- title: '**IMPROVED:**'
|
- title: '**IMPROVED:**'
|
||||||
labels:
|
labels:
|
||||||
- 'kind/enhancement'
|
- 'kind/enhancement'
|
||||||
@ -23,17 +22,16 @@ categories:
|
|||||||
- title: '**CHANGED:**'
|
- title: '**CHANGED:**'
|
||||||
labels:
|
labels:
|
||||||
- 'kind/cleanup'
|
- 'kind/cleanup'
|
||||||
- 'area/compatibility'
|
|
||||||
- 'kind/change'
|
- 'kind/change'
|
||||||
- title: '**SETTINGS:**'
|
- title: '**SETTINGS:**'
|
||||||
labels:
|
labels:
|
||||||
- 'kind/setting'
|
- 'kind/setting'
|
||||||
- title: '**TRANSLATIONS:**'
|
- title: '**TRANSLATIONS:**'
|
||||||
labels:
|
labels:
|
||||||
- 'area/translations'
|
- 'kind/translation'
|
||||||
|
|
||||||
exclude-labels:
|
exclude-labels:
|
||||||
- 'ignore changelog'
|
- 'ignore-changelog'
|
||||||
- 'dependencies'
|
- 'dependencies'
|
||||||
|
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
#include "initKeybinds.inc.sqf"
|
|
||||||
|
|
||||||
GVAR(currentbulletID) = -1;
|
GVAR(currentbulletID) = -1;
|
||||||
|
|
||||||
GVAR(Protractor) = false;
|
GVAR(Protractor) = false;
|
||||||
@ -11,6 +9,8 @@ GVAR(currentGrid) = 0;
|
|||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
#include "initKeybinds.inc.sqf"
|
||||||
|
|
||||||
["CBA_settingsInitialized", {
|
["CBA_settingsInitialized", {
|
||||||
//If not enabled, dont't add PFEH
|
//If not enabled, dont't add PFEH
|
||||||
if (!GVAR(enabled)) exitWith {};
|
if (!GVAR(enabled)) exitWith {};
|
||||||
@ -19,11 +19,11 @@ if (!hasInterface) exitWith {};
|
|||||||
[] call FUNC(initializeTerrainExtension);
|
[] call FUNC(initializeTerrainExtension);
|
||||||
|
|
||||||
// Register fire event handler
|
// Register fire event handler
|
||||||
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
["ace_firedPlayer", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||||
["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
["ace_firedPlayerNonLocal", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Register Perframe Handler
|
// 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)
|
//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;
|
_dragModel = 1;
|
||||||
};
|
};
|
||||||
private _ballisticCoefficients = getArray(_ammoConfig >> "ACE_ballisticCoefficients");
|
private _ballisticCoefficients = getArray(_ammoConfig >> "ACE_ballisticCoefficients");
|
||||||
|
if (_ballisticCoefficients isEqualTo []) then {
|
||||||
|
_ballisticCoefficients = [0.5];
|
||||||
|
};
|
||||||
private _velocityBoundaries = getArray(_ammoConfig >> "ACE_velocityBoundaries");
|
private _velocityBoundaries = getArray(_ammoConfig >> "ACE_velocityBoundaries");
|
||||||
private _atmosphereModel = getText(_ammoConfig >> "ACE_standardAtmosphere");
|
private _atmosphereModel = getText(_ammoConfig >> "ACE_standardAtmosphere");
|
||||||
if (_atmosphereModel isEqualTo "") then {
|
if (_atmosphereModel isEqualTo "") then {
|
||||||
|
@ -2,35 +2,6 @@
|
|||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
["baseline", {
|
|
||||||
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
|
|
||||||
switch (stance ACE_player) do {
|
|
||||||
case ("CROUCH"): {
|
|
||||||
(1.0 + _fatigue ^ 2 * 0.1)
|
|
||||||
};
|
|
||||||
case ("PRONE"): {
|
|
||||||
(1.0 + _fatigue ^ 2 * 2.0)
|
|
||||||
};
|
|
||||||
default {
|
|
||||||
(1.5 + _fatigue ^ 2 * 3.0)
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}, 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
|
// recheck weapon inertia after weapon swap, change of attachments or switching unit
|
||||||
["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
["loadout", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
["loadout", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
@ -39,6 +10,21 @@ if (!hasInterface) exitWith {};
|
|||||||
["CBA_settingsInitialized", {
|
["CBA_settingsInitialized", {
|
||||||
if (!GVAR(enabled)) exitWith {};
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
|
["baseline", {
|
||||||
|
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
|
||||||
|
switch (stance ACE_player) do {
|
||||||
|
case ("CROUCH"): {
|
||||||
|
(1.0 + _fatigue ^ 2 * 0.1)
|
||||||
|
};
|
||||||
|
case ("PRONE"): {
|
||||||
|
(1.0 + _fatigue ^ 2 * 2.0)
|
||||||
|
};
|
||||||
|
default {
|
||||||
|
(1.5 + _fatigue ^ 2 * 3.0)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
|
||||||
|
|
||||||
// - Post process effect ------------------------------------------------------
|
// - Post process effect ------------------------------------------------------
|
||||||
GVAR(ppeBlackout) = ppEffectCreate ["ColorCorrections", 4220];
|
GVAR(ppeBlackout) = ppEffectCreate ["ColorCorrections", 4220];
|
||||||
GVAR(ppeBlackout) ppEffectEnable true;
|
GVAR(ppeBlackout) ppEffectEnable true;
|
||||||
|
@ -80,30 +80,3 @@
|
|||||||
[0, 5, 1, 1],
|
[0, 5, 1, 1],
|
||||||
true
|
true
|
||||||
] call CBA_fnc_addSetting;
|
] 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>
|
<Italian>Influenza la prestazione generale di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore.</Italian>
|
||||||
<Chinese>影響所有玩家的體力表現,值越高代表體力越好</Chinese>
|
<Chinese>影響所有玩家的體力表現,值越高代表體力越好</Chinese>
|
||||||
<Chinesesimp>影响所有玩家的体力表现,值越高代表体力越好</Chinesesimp>
|
<Chinesesimp>影响所有玩家的体力表现,值越高代表体力越好</Chinesesimp>
|
||||||
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение.</Russian>
|
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение. Чем выше, тем лучше.</Russian>
|
||||||
<Portuguese>Influencia na performance geral de todos os jogadores sem nenhum fator personalizado. Quanto maior, melhor.</Portuguese>
|
<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>
|
<Czech>Ovlivňuje celkový výkon všech hráčů bez vlastního faktoru. Vyšší znamená lépe.</Czech>
|
||||||
</Key>
|
</Key>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
<Italian>Influenza la prestazione personalizzata di questa unità. Maggiore significa migliore.</Italian>
|
<Italian>Influenza la prestazione personalizzata di questa unità. Maggiore significa migliore.</Italian>
|
||||||
<Chinese>影響這個單位的體力表現,值越高代表體力越好</Chinese>
|
<Chinese>影響這個單位的體力表現,值越高代表體力越好</Chinese>
|
||||||
<Chinesesimp>影响这个单位的体力表现,值越高代表体力越好</Chinesesimp>
|
<Chinesesimp>影响这个单位的体力表现,值越高代表体力越好</Chinesesimp>
|
||||||
<Russian>Влияет на общую производительность юнита.</Russian>
|
<Russian>Влияет на общую производительность юнита.Чем выше, тем лучше.</Russian>
|
||||||
<Portuguese>Influencia na performance geral dessa unidade. Quanto maior, melhor.</Portuguese>
|
<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>
|
<Czech>Ovlivňuje celkový výkon této jednotky. Vyšší znamená lépe.</Czech>
|
||||||
</Key>
|
</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>
|
<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>
|
<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>
|
||||||
<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">
|
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||||
<English>Enabled</English>
|
<English>Enabled</English>
|
||||||
<Spanish>Activada</Spanish>
|
<Spanish>Activada</Spanish>
|
||||||
@ -250,7 +180,7 @@
|
|||||||
<Italian>Abilita/Disabilita la Fatica Avanzata.</Italian>
|
<Italian>Abilita/Disabilita la Fatica Avanzata.</Italian>
|
||||||
<Chinese>啟用/關閉進階體力.</Chinese>
|
<Chinese>啟用/關閉進階體力.</Chinese>
|
||||||
<Chinesesimp>启用/关闭进阶体力。</Chinesesimp>
|
<Chinesesimp>启用/关闭进阶体力。</Chinesesimp>
|
||||||
<Russian>Включает / Отключает Продвинутую усталость</Russian>
|
<Russian>Включает/отключает Продвинутую усталость</Russian>
|
||||||
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
|
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
|
||||||
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
|
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
|
||||||
</Key>
|
</Key>
|
||||||
|
@ -2,11 +2,14 @@
|
|||||||
|
|
||||||
// Fired XEH
|
// Fired XEH
|
||||||
GVAR(ammoEventHandlers) = createHashMap;
|
GVAR(ammoEventHandlers) = createHashMap;
|
||||||
[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
|
[QGVAR(throwFiredXEH), LINKFUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Exit on HC
|
// Exit on HC
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
// Temporary Wind Info indication
|
||||||
|
GVAR(tempWindInfo) = false;
|
||||||
|
|
||||||
// Ammo/Magazines look-up hash for correctness of initSpeed
|
// Ammo/Magazines look-up hash for correctness of initSpeed
|
||||||
GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ params ["_unit"];
|
|||||||
|
|
||||||
if !(_unit getVariable [QGVAR(inHand), false]) exitWith {false};
|
if !(_unit getVariable [QGVAR(inHand), false]) exitWith {false};
|
||||||
|
|
||||||
if (vehicle _unit != _unit) exitWith {
|
if (!isNull objectParent _unit) exitWith {
|
||||||
private _startPos = eyePos _unit;
|
private _startPos = eyePos _unit;
|
||||||
private _aimLinePos = AGLToASL (positionCameraToWorld [0, 0, 1]);
|
private _aimLinePos = AGLToASL (positionCameraToWorld [0, 0, 1]);
|
||||||
private _intersections = lineIntersectsSurfaces [_startPos, _aimLinePos, _unit, objNull, false];
|
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)
|
// Remove controls hint (check if ever enabled is inside the function)
|
||||||
call EFUNC(interaction,hideMouseHint);
|
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
|
// Remove throw action
|
||||||
[_unit, "DefaultAction", _unit getVariable [QGVAR(throwAction), -1]] call EFUNC(common,removeActionEventHandler);
|
[_unit, "DefaultAction", _unit getVariable [QGVAR(throwAction), -1]] call EFUNC(common,removeActionEventHandler);
|
||||||
|
|
||||||
|
@ -18,6 +18,15 @@
|
|||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
TRACE_1("params",_unit);
|
TRACE_1("params",_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;
|
||||||
|
};
|
||||||
|
|
||||||
// Select next throwable if one already in hand
|
// Select next throwable if one already in hand
|
||||||
if (_unit getVariable [QGVAR(inHand), false]) exitWith {
|
if (_unit getVariable [QGVAR(inHand), false]) exitWith {
|
||||||
TRACE_1("inHand",_unit);
|
TRACE_1("inHand",_unit);
|
||||||
|
@ -45,7 +45,7 @@ if (!(_unit getVariable [QGVAR(primed), false])) then {
|
|||||||
private _newVelocity = (_p1 vectorFromTo _p2) vectorMultiply _velocity;
|
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
|
// 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));
|
_newVelocity = _newVelocity vectorAdd (velocity (vehicle _unit));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -40,3 +40,11 @@ private _category = format ["ACE %1", localize LSTRING(Category)];
|
|||||||
true,
|
true,
|
||||||
1
|
1
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
|
[
|
||||||
|
QGVAR(enableTempWindInfo), "CHECKBOX",
|
||||||
|
[LSTRING(EnableTempWindInfo_DisplayName), LSTRING(EnableTempWindInfo_Description)],
|
||||||
|
_category,
|
||||||
|
true,
|
||||||
|
0
|
||||||
|
] call CBA_fnc_addSetting;
|
||||||
|
@ -185,6 +185,20 @@
|
|||||||
<Portuguese>Permite que arremessáveis fixados em objetos sejam pegos.</Portuguese>
|
<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>
|
<Czech>Zapíná schopnost zvednutí předmětů z objektů ke kterým jsou připnuté.</Czech>
|
||||||
</Key>
|
</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>
|
||||||
|
</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>
|
||||||
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
||||||
<English>Prepare/Change Throwable</English>
|
<English>Prepare/Change Throwable</English>
|
||||||
<Spanish>Preparar/Cambiar objetos lanzables</Spanish>
|
<Spanish>Preparar/Cambiar objetos lanzables</Spanish>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
} forEach _sections;
|
} forEach _sections;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(unGarrison), FUNC(unGarrison)] call CBA_fnc_addEventHandler;
|
[QGVAR(unGarrison), LINKFUNC(unGarrison)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(doMove), {
|
[QGVAR(doMove), {
|
||||||
params ["_unitsArray"];
|
params ["_unitsArray"];
|
||||||
@ -73,6 +73,6 @@
|
|||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
["CAManBase", "init", {
|
["CAManBase", "init", {
|
||||||
// wait for HMD to be assigned so `hmd _unit` works
|
// 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;
|
}] call CBA_fnc_addClassEventHandler;
|
||||||
};
|
};
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
<French>Equipe des JVN pendant la nuit et les déséquipe le jour.\nN'ajoute pas les JVN dans l'intenvaire !</French>
|
<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>
|
<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>
|
<Japanese>インベントリ内の暗視装置を夜間に装備し、日中は解除し収納します。\nこれはNVGをインベントリに追加しません。</Japanese>
|
||||||
<Russian>Оснащает ПНВ в инвентаре в ночное время и отключает его в дневное время.\nНе добавляет ПНВ в инвентарь!</Russian>
|
<Russian>Экипирует ПНВ в ночное время и отключает его в дневное время.\nНе добавляет ПНВ в инвентарь!</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -123,7 +123,9 @@ class GVAR(stats) {
|
|||||||
stats[] = {"maximumLoad"};
|
stats[] = {"maximumLoad"};
|
||||||
displayName = "$STR_a3_rscdisplayarsenal_stat_load";
|
displayName = "$STR_a3_rscdisplayarsenal_stat_load";
|
||||||
showBar = 1;
|
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));
|
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}, {}};
|
tabs[] = {{3,4,5}, {}};
|
||||||
};
|
};
|
||||||
class ACE_smokeChemTTL: statBase {
|
class ACE_smokeChemTTL: statBase {
|
||||||
|
@ -98,6 +98,7 @@ PREP(statBarStatement_rateOfFIre);
|
|||||||
PREP(statTextStatement_accuracy);
|
PREP(statTextStatement_accuracy);
|
||||||
PREP(statTextStatement_explosionTime);
|
PREP(statTextStatement_explosionTime);
|
||||||
PREP(statTextStatement_illuminators);
|
PREP(statTextStatement_illuminators);
|
||||||
|
PREP(statTextStatement_load);
|
||||||
PREP(statTextStatement_magCount);
|
PREP(statTextStatement_magCount);
|
||||||
PREP(statTextStatement_mass);
|
PREP(statTextStatement_mass);
|
||||||
PREP(statTextStatement_rateOfFire);
|
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]} ||
|
_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]} ||
|
{getNumber (_configItemInfo >> "type") in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} ||
|
||||||
{getText (_cfgWeapons >> _x >> "simulation") == "ItemMineDetector"} ||
|
{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]];
|
GVAR(customRightPanelButtons) set [_position, [_items apply {_x call EFUNC(common,getConfigName)}, _picture, _tooltip, _moveOnOverwrite]];
|
||||||
|
@ -78,10 +78,10 @@ if (!isNull curatorCamera) then {
|
|||||||
|
|
||||||
// Make face and voice selection JIP compatible; 3DEN doesn't need this though
|
// Make face and voice selection JIP compatible; 3DEN doesn't need this though
|
||||||
if (isMultiplayer && {!is3DEN}) then {
|
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, 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;
|
[_id, GVAR(center)] call CBA_fnc_removeGlobalEventJIP;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ private _magazineMiscItems = createHashMap;
|
|||||||
|
|
||||||
{
|
{
|
||||||
_magazineMiscItems set [configName _x, nil];
|
_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
|
// Remove invalid/non-existent entries
|
||||||
_grenadeList deleteAt "";
|
_grenadeList deleteAt "";
|
||||||
|
@ -244,7 +244,7 @@ _for do {
|
|||||||
|
|
||||||
// Sort alphabetically, find the previously selected item and select it again
|
// Sort alphabetically, find the previously selected item and select it again
|
||||||
if (_right) then {
|
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 {
|
_for do {
|
||||||
// Remove sorting text, as it blocks the item name otherwise
|
// Remove sorting text, as it blocks the item name otherwise
|
||||||
@ -258,7 +258,7 @@ if (_right) then {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
} else {
|
} 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 {
|
_for do {
|
||||||
_item = _panel lbData _i;
|
_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]
|
@ -1191,7 +1191,7 @@
|
|||||||
<Chinesesimp>支持夜视仪</Chinesesimp>
|
<Chinesesimp>支持夜视仪</Chinesesimp>
|
||||||
<Czech>Podpora nočního vidění</Czech>
|
<Czech>Podpora nočního vidění</Czech>
|
||||||
<Turkish>Gece Görüş Desteği</Turkish>
|
<Turkish>Gece Görüş Desteği</Turkish>
|
||||||
<Korean>야간투시 지원여부</Korean>
|
<Korean>야간투시 지원</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statVisionMode_supPrim">
|
<Key ID="STR_ACE_Arsenal_statVisionMode_supPrim">
|
||||||
<English>Primary supported</English>
|
<English>Primary supported</English>
|
||||||
@ -1206,7 +1206,7 @@
|
|||||||
<Chinese>主武器支援</Chinese>
|
<Chinese>主武器支援</Chinese>
|
||||||
<Chinesesimp>主镜支持</Chinesesimp>
|
<Chinesesimp>主镜支持</Chinesesimp>
|
||||||
<Czech>Hlavní část hledí podporuje</Czech>
|
<Czech>Hlavní část hledí podporuje</Czech>
|
||||||
<Korean>주무기 지원여부</Korean>
|
<Korean>주무기 지원</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statVisionMode_supSec">
|
<Key ID="STR_ACE_Arsenal_statVisionMode_supSec">
|
||||||
<English>Secondary supported</English>
|
<English>Secondary supported</English>
|
||||||
@ -1221,7 +1221,7 @@
|
|||||||
<Chinese>次要武器支援</Chinese>
|
<Chinese>次要武器支援</Chinese>
|
||||||
<Chinesesimp>副镜支持</Chinesesimp>
|
<Chinesesimp>副镜支持</Chinesesimp>
|
||||||
<Czech>Vedlejší část hledí podporuje</Czech>
|
<Czech>Vedlejší část hledí podporuje</Czech>
|
||||||
<Korean>보조무기 지원여부</Korean>
|
<Korean>보조무기 지원</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrim">
|
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrim">
|
||||||
<English>Primary integrated</English>
|
<English>Primary integrated</English>
|
||||||
@ -1236,17 +1236,21 @@
|
|||||||
<Chinese>整合主武器</Chinese>
|
<Chinese>整合主武器</Chinese>
|
||||||
<Chinesesimp>主镜内置</Chinesesimp>
|
<Chinesesimp>主镜内置</Chinesesimp>
|
||||||
<Czech>Integrováno do hlavní části hledí</Czech>
|
<Czech>Integrováno do hlavní části hledí</Czech>
|
||||||
<Korean>주무기 내장여부</Korean>
|
<Korean>주무기 내장</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statVisionMode_ti">
|
<Key ID="STR_ACE_Arsenal_statVisionMode_ti">
|
||||||
<English>Thermal integrated</English>
|
<English>Thermal integrated</English>
|
||||||
|
<Italian>Termico integrato</Italian>
|
||||||
<Japanese>熱画像装置内蔵</Japanese>
|
<Japanese>熱画像装置内蔵</Japanese>
|
||||||
<Russian>Интегрирован в тепловизор.</Russian>
|
<Russian>Интегрирован тепловизор.</Russian>
|
||||||
|
<Korean>열화상 내장</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrimTi">
|
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrimTi">
|
||||||
<English>Thermal & Primary integrated</English>
|
<English>Thermal & Primary integrated</English>
|
||||||
|
<Italian>Termico e Primario integrato</Italian>
|
||||||
<Japanese>熱画像装置内蔵・プライマリに内蔵</Japanese>
|
<Japanese>熱画像装置内蔵・プライマリに内蔵</Japanese>
|
||||||
<Russian>Интегрирован в тепловизор и осн.прицел.</Russian>
|
<Russian>Интегрирован тепловизор и осн.прицел.</Russian>
|
||||||
|
<Korean>열화상과 주무기 내장</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Arsenal_statVisionMode_NoSup">
|
<Key ID="STR_ACE_Arsenal_statVisionMode_NoSup">
|
||||||
<English>Not Supported</English>
|
<English>Not Supported</English>
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
#include "initKeybinds.inc.sqf"
|
#include "initKeybinds.inc.sqf"
|
||||||
|
|
||||||
GVAR(active) = false;
|
GVAR(active) = false;
|
||||||
GVAR(initialised) = false;
|
GVAR(initialised) = false;
|
||||||
|
|
||||||
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;
|
[QEGVAR(vector,rangefinderData), LINKFUNC(sord)] call CBA_fnc_addEventHandler;
|
||||||
|
@ -25,14 +25,14 @@ if (isServer) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
|
["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
|
||||||
[QGVAR(moveInCaptive), FUNC(vehicleCaptiveMoveIn)] call CBA_fnc_addEventHandler;
|
[QGVAR(moveInCaptive), LINKFUNC(vehicleCaptiveMoveIn)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(moveOutCaptive), FUNC(vehicleCaptiveMoveOut)] call CBA_fnc_addEventHandler;
|
[QGVAR(moveOutCaptive), LINKFUNC(vehicleCaptiveMoveOut)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(setHandcuffed), FUNC(setHandcuffed)] call CBA_fnc_addEventHandler;
|
[QGVAR(setHandcuffed), LINKFUNC(setHandcuffed)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(setSurrendered), FUNC(setSurrendered)] call CBA_fnc_addEventHandler;
|
[QGVAR(setSurrendered), LINKFUNC(setSurrendered)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
//Medical Integration Events
|
//Medical Integration Events
|
||||||
["ace_unconscious", FUNC(handleOnUnconscious)] call CBA_fnc_addEventHandler;
|
["ace_unconscious", LINKFUNC(handleOnUnconscious)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ if (_isUnconc) then {
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
//Woke up: if handcuffed, goto animation
|
//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] call EFUNC(common,fixLoweredRifleAnimation);
|
||||||
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
|
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
|
||||||
};
|
};
|
||||||
|
@ -486,7 +486,7 @@
|
|||||||
<Chinesesimp>设置在光标下的单位成俘虏状态。</Chinesesimp>
|
<Chinesesimp>设置在光标下的单位成俘虏状态。</Chinesesimp>
|
||||||
<Korean>커서의 병력을 포박합니다.</Korean>
|
<Korean>커서의 병력을 포박합니다.</Korean>
|
||||||
<Polish>Ustawia jednostkę pod kursorem jako jeniec.</Polish>
|
<Polish>Ustawia jednostkę pod kursorem jako jeniec.</Polish>
|
||||||
<Russian>Арестовывает указанный курсором юнит</Russian>
|
<Russian>Арестовывает указанный курсором юнит.</Russian>
|
||||||
<Portuguese>Torna a unidade sob o cursor um prisioneiro</Portuguese>
|
<Portuguese>Torna a unidade sob o cursor um prisioneiro</Portuguese>
|
||||||
<French>Capture l'unité sous le curseur.</French>
|
<French>Capture l'unité sous le curseur.</French>
|
||||||
<Czech>Nastaví jednotku pod kurzorem jako zajatce.</Czech>
|
<Czech>Nastaví jednotku pod kurzorem jako zajatce.</Czech>
|
||||||
|
@ -35,8 +35,10 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_deployObject">
|
<Key ID="STR_ACE_Cargo_deployObject">
|
||||||
<English>Deploy</English>
|
<English>Deploy</English>
|
||||||
|
<Italian>Piazza</Italian>
|
||||||
<Russian>Разместить</Russian>
|
<Russian>Разместить</Russian>
|
||||||
<Japanese>配置する</Japanese>
|
<Japanese>配置する</Japanese>
|
||||||
|
<Korean>배치하기</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_ScrollAction">
|
<Key ID="STR_ACE_Cargo_ScrollAction">
|
||||||
<English>Raise/Lower | (Ctrl + Scroll) Rotate</English>
|
<English>Raise/Lower | (Ctrl + Scroll) Rotate</English>
|
||||||
@ -279,14 +281,18 @@
|
|||||||
<Key ID="STR_ACE_Cargo_LoadingItem">
|
<Key ID="STR_ACE_Cargo_LoadingItem">
|
||||||
<English>Loading %1 into %2...</English>
|
<English>Loading %1 into %2...</English>
|
||||||
<Spanish>Cargando %1 en %2...</Spanish>
|
<Spanish>Cargando %1 en %2...</Spanish>
|
||||||
|
<Italian>Caricando %1 in %2...</Italian>
|
||||||
<Japanese>%1 を %2 に積み込んでいます・・・</Japanese>
|
<Japanese>%1 を %2 に積み込んでいます・・・</Japanese>
|
||||||
<Russian>Загружаем %1 в %2...</Russian>
|
<Russian>Загружаем %1 в %2...</Russian>
|
||||||
|
<Korean>%1을(를) %2에 싣는 중...</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_UnloadingItem">
|
<Key ID="STR_ACE_Cargo_UnloadingItem">
|
||||||
<English>Unloading %1 from %2...</English>
|
<English>Unloading %1 from %2...</English>
|
||||||
<Spanish>Descargando %1 de %2...</Spanish>
|
<Spanish>Descargando %1 de %2...</Spanish>
|
||||||
|
<Italian>Scaricando %1 da %2...</Italian>
|
||||||
<Japanese>%1 を %2 から降ろしています・・・</Japanese>
|
<Japanese>%1 を %2 から降ろしています・・・</Japanese>
|
||||||
<Russian>Выгружаем %1 из %2...</Russian>
|
<Russian>Выгружаем %1 из %2...</Russian>
|
||||||
|
<Korean>%1을(를) %2(으)로부터 내리는 중...</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_LoadingFailed">
|
<Key ID="STR_ACE_Cargo_LoadingFailed">
|
||||||
<English>%1<br/>could not be loaded</English>
|
<English>%1<br/>could not be loaded</English>
|
||||||
@ -507,7 +513,7 @@
|
|||||||
<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>
|
<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>
|
<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>
|
<Russian>Изменяет время для загрузки/выгрузки предметов. \nВремя (сек) - это размер предмета, умноженный на это значение.</Russian>
|
||||||
<Portuguese>Coeficiente de quanto tempo leva para carregar/descarregar itens.\nTempo, em segundos, é o tamanho do objeto multiplicado por esse valor.</Portuguese>
|
<Portuguese>Coeficiente de quanto tempo leva para carregar/descarregar itens.\nTempo, em segundos, é o tamanho do objeto multiplicado por esse valor.</Portuguese>
|
||||||
<French>Modifie le temps nécessaire pour charger/décharger des objets.\nLe temps, en secondes, est calculé en multipliant la taille de l'élément par ce coefficient.</French>
|
<French>Modifie le temps nécessaire pour charger/décharger des objets.\nLe temps, en secondes, est calculé en multipliant la taille de l'élément par ce coefficient.</French>
|
||||||
<Chinese>修改要花多長時間來裝載/卸載物品。\n時間,以秒為單位,而物品的大小數值與這個係數成比。</Chinese>
|
<Chinese>修改要花多長時間來裝載/卸載物品。\n時間,以秒為單位,而物品的大小數值與這個係數成比。</Chinese>
|
||||||
@ -570,13 +576,17 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_enableDeploy">
|
<Key ID="STR_ACE_Cargo_enableDeploy">
|
||||||
<English>Enable deploy</English>
|
<English>Enable deploy</English>
|
||||||
|
<Italian>Abilita Piazzamento</Italian>
|
||||||
<Russian>Включить размещение</Russian>
|
<Russian>Включить размещение</Russian>
|
||||||
<Japanese>配置機能を有効化</Japanese>
|
<Japanese>配置機能を有効化</Japanese>
|
||||||
|
<Korean>배치 활성화</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_enableDeploy_description">
|
<Key ID="STR_ACE_Cargo_enableDeploy_description">
|
||||||
<English>Controls whether cargo items can be unloaded via the deploy method.</English>
|
<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>
|
<Russian>Определяет, можно ли выгружать грузы с помощью метода размещения.</Russian>
|
||||||
<Japanese>配置機能を介して貨物アイテムを降ろすことが出来るかどうかを制御します。</Japanese>
|
<Japanese>配置機能を介して貨物アイテムを降ろすことが出来るかどうかを制御します。</Japanese>
|
||||||
|
<Korean>배치 방법을 통해 화물 아이템을 내릴 수 있는지 여부를 제어합니다.</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -4,4 +4,4 @@ if (!hasInterface || !GVAR(enabled)) exitWith {};
|
|||||||
|
|
||||||
GVAR(cachedCasings) = createHashMap;
|
GVAR(cachedCasings) = createHashMap;
|
||||||
GVAR(casings) = [];
|
GVAR(casings) = [];
|
||||||
["CAManBase", "FiredMan", {call FUNC(createCasing)}] call CBA_fnc_addClassEventHandler;
|
["CAManBase", "FiredMan", LINKFUNC(createCasing)] call CBA_fnc_addClassEventHandler;
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
["ace_firedPlayer", DFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
["ace_firedPlayer", LINKFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||||
// ["ace_firedPlayerNonLocal", DFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
// ["ace_firedPlayerNonLocal", LINKFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||||
// ["ace_firedNonPlayer", DFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
// ["ace_firedNonPlayer", LINKFUNC(throwEH)] call CBA_fnc_addEventHandler;
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
class CfgMovesBasic {
|
class CfgMovesBasic {
|
||||||
class Default;
|
// Idle affects legs when weapon switching - fixes units sliding when holstering weapons
|
||||||
|
class Default {
|
||||||
|
idle = "";
|
||||||
|
};
|
||||||
|
|
||||||
// From ACRE
|
// From ACRE
|
||||||
class ManActions {
|
class ManActions {
|
||||||
GVAR(stop) = QGVAR(stop);
|
GVAR(stop) = QGVAR(stop);
|
||||||
|
@ -13,6 +13,7 @@ PREP(addLineToDebugDraw);
|
|||||||
PREP(addSwayFactor);
|
PREP(addSwayFactor);
|
||||||
PREP(addToInventory);
|
PREP(addToInventory);
|
||||||
PREP(addWeapon);
|
PREP(addWeapon);
|
||||||
|
PREP(adjustMagazineAmmo);
|
||||||
PREP(assignedItemFix);
|
PREP(assignedItemFix);
|
||||||
PREP(assignObjectsInList);
|
PREP(assignObjectsInList);
|
||||||
PREP(ambientBrightness);
|
PREP(ambientBrightness);
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
//Status Effect EHs:
|
//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);
|
["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);
|
["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);
|
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered)]] call FUNC(statusEffect_addType);
|
||||||
@ -157,9 +157,9 @@ if (isServer) then {
|
|||||||
INFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation);
|
INFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation);
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(fixCollision), FUNC(fixCollision)] call CBA_fnc_addEventHandler;
|
[QGVAR(fixCollision), LINKFUNC(fixCollision)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(fixFloating), FUNC(fixFloating)] call CBA_fnc_addEventHandler;
|
[QGVAR(fixFloating), LINKFUNC(fixFloating)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(fixPosition), FUNC(fixPosition)] call CBA_fnc_addEventHandler;
|
[QGVAR(fixPosition), LINKFUNC(fixPosition)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
["ace_loadPersonEvent", LINKFUNC(loadPersonLocal)] call CBA_fnc_addEventHandler;
|
["ace_loadPersonEvent", LINKFUNC(loadPersonLocal)] call CBA_fnc_addEventHandler;
|
||||||
["ace_unloadPersonEvent", LINKFUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler;
|
["ace_unloadPersonEvent", LINKFUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler;
|
||||||
@ -210,8 +210,8 @@ if (isServer) then {
|
|||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Request framework
|
// Request framework
|
||||||
[QGVAR(requestCallback), FUNC(requestCallback)] call CBA_fnc_addEventHandler;
|
[QGVAR(requestCallback), LINKFUNC(requestCallback)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(receiveRequest), FUNC(receiveRequest)] call CBA_fnc_addEventHandler;
|
[QGVAR(receiveRequest), LINKFUNC(receiveRequest)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(systemChatGlobal), {systemChat _this}] call CBA_fnc_addEventHandler;
|
[QGVAR(systemChatGlobal), {systemChat _this}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ if (isServer) then {
|
|||||||
[QGVAR(enableSimulationGlobal), {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler;
|
[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;
|
[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;
|
["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;
|
[QGVAR(claimSafe), LINKFUNC(claimSafeServer)] call CBA_fnc_addEventHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -237,14 +237,14 @@ if (!isServer) then {
|
|||||||
["ACEa", [player]] call CBA_fnc_serverEvent;
|
["ACEa", [player]] call CBA_fnc_serverEvent;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
} else {
|
} else {
|
||||||
["ACEa", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler;
|
["ACEa", LINKFUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
["ACEe", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
["ACEe", LINKFUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||||
["ACEs", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler;
|
["ACEs", LINKFUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
[FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -393,8 +393,8 @@ addMissionEventHandler ["PlayerViewChanged", {
|
|||||||
// Eventhandlers for player controlled machines
|
// Eventhandlers for player controlled machines
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
[QGVAR(displayTextStructured), {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler;
|
[QGVAR(displayTextStructured), LINKFUNC(displayTextStructured)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(displayTextPicture), {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler;
|
[QGVAR(displayTextPicture), LINKFUNC(displayTextPicture)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
["ace_unconscious", {
|
["ace_unconscious", {
|
||||||
params ["_unit", "_isUnconscious"];
|
params ["_unit", "_isUnconscious"];
|
||||||
@ -404,7 +404,7 @@ addMissionEventHandler ["PlayerViewChanged", {
|
|||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
["ace_useItem", DFUNC(useItem)] call CBA_fnc_addEventHandler;
|
["ace_useItem", LINKFUNC(useItem)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
@ -500,10 +500,24 @@ GVAR(reloadMutex_lastMagazines) = [];
|
|||||||
// Start the sway loop
|
// Start the sway loop
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
["CBA_settingsInitialized", {
|
["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
|
// frame after settingsInitialized to ensure all other addons have added their factors
|
||||||
if ((GVAR(swayFactorsBaseline) + GVAR(swayFactorsMultiplier)) isNotEqualTo []) then {
|
if (GVAR(enableSway)) then {
|
||||||
call FUNC(swayLoop)
|
call FUNC(swayLoop);
|
||||||
};
|
};
|
||||||
// check for pre-3.16 sway factors being added
|
// check for pre-3.16 sway factors being added
|
||||||
if (!isNil {missionNamespace getVariable "ACE_setCustomAimCoef"}) then {
|
if (!isNil {missionNamespace getVariable "ACE_setCustomAimCoef"}) then {
|
||||||
|
@ -24,7 +24,7 @@ if (_name in GVAR(syncedEvents)) exitWith {
|
|||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
private _eventId = [_name, FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
private _eventId = [_name, LINKFUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler;
|
||||||
private _data = [_handler, [], _ttl, _eventId];
|
private _data = [_handler, [], _ttl, _eventId];
|
||||||
|
|
||||||
GVAR(syncedEvents) set [_name, _data];
|
GVAR(syncedEvents) set [_name, _data];
|
||||||
|
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
|
@ -17,6 +17,6 @@
|
|||||||
|
|
||||||
params ["_unit"];
|
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);
|
[_unit, "amovpercmstpsraswrfldnon", 0] call FUNC(doAnimation);
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "..\script_component.hpp"
|
#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)
|
* 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
|
* Doesn't count assignedItems, weapons, weapon attachments, magazines in weapons
|
||||||
*
|
*
|
||||||
@ -19,13 +19,17 @@
|
|||||||
|
|
||||||
params ["_unit", "_itemType"];
|
params ["_unit", "_itemType"];
|
||||||
|
|
||||||
private _countItemsInContainer = {
|
private _count = 0;
|
||||||
(getItemCargo _this) params ["_itemTypes", "_itemCounts"];
|
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) +
|
_count = _count + (_itemCounts param [_itemTypes find _itemType, 0]);
|
||||||
((vestContainer _unit) call _countItemsInContainer) +
|
} forEach [uniformContainer _unit, vestContainer _unit, backpackContainer _unit];
|
||||||
((backpackContainer _unit) call _countItemsInContainer)
|
|
||||||
|
_count
|
||||||
|
@ -29,7 +29,7 @@ private _unitActionsCfg = configFile >> "CfgMovesBasic" >> "Actions" >> getText
|
|||||||
|
|
||||||
TRACE_2("Animation/Action",configName _unitAnimationCfg,configName _unitActionsCfg);
|
TRACE_2("Animation/Action",configName _unitAnimationCfg,configName _unitActionsCfg);
|
||||||
|
|
||||||
if (vehicle _unit != _unit) then {
|
if (!isNull objectParent _unit) then {
|
||||||
private _interpolateArray = getArray (_unitAnimationCfg >> "interpolateTo");
|
private _interpolateArray = getArray (_unitAnimationCfg >> "interpolateTo");
|
||||||
|
|
||||||
for "_index" from 0 to (count _interpolateArray - 1) step 2 do {
|
for "_index" from 0 to (count _interpolateArray - 1) step 2 do {
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
// Animation changes even inside vehicle post-1.60
|
// 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,
|
_unit,
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
private _baseline = 1;
|
private _baseline = 1;
|
||||||
if (GVAR(swayFactorsBaseline) isNotEqualTo []) then {
|
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;
|
private _multiplier = 1;
|
||||||
if (GVAR(swayFactorsMultiplier) isNotEqualTo []) then {
|
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);
|
ACE_player setCustomAimCoef (_baseline * _multiplier);
|
||||||
|
@ -1,37 +1,84 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: mharis001
|
* Author: mharis001, Blue, Brett Mayson
|
||||||
* Returns list of unique items in a unit's inventory.
|
* Returns list of unique items in the target's inventory.
|
||||||
* Items are cached if unit is ACE_player.
|
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit <OBJECT>
|
* 0: Target <OBJECT>
|
||||||
|
* 1: Include magazines <NUMBER>
|
||||||
|
* 0: No (default)
|
||||||
|
* 1: Yes
|
||||||
|
* 2: Only magazines
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Items <ARRAY>
|
* Items <ARRAY>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player] call ace_common_fnc_uniqueItems
|
* [player, 2] call ace_common_fnc_uniqueItems
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_unit"];
|
params ["_target", ["_includeMagazines", 0]];
|
||||||
|
|
||||||
private _fnc_getItems = {
|
private _fnc_getItems = {
|
||||||
private _items = (getItemCargo uniformContainer _unit) select 0;
|
private _items = [];
|
||||||
_items append ((getItemCargo vestContainer _unit) select 0);
|
|
||||||
_items append ((getItemCargo backpackContainer _unit) select 0);
|
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
|
_items arrayIntersect _items
|
||||||
};
|
};
|
||||||
|
|
||||||
// Use cached items list if unit is ACE_player
|
// Cache items list if unit is ACE_player
|
||||||
if (_unit isEqualTo ACE_player) then {
|
if (_target isEqualTo ACE_player) then {
|
||||||
if (isNil QGVAR(uniqueItemsCache)) then {
|
if (isNil QGVAR(uniqueItemsCache)) then {
|
||||||
GVAR(uniqueItemsCache) = call _fnc_getItems;
|
GVAR(uniqueItemsCache) = call _fnc_getItems;
|
||||||
};
|
};
|
||||||
+GVAR(uniqueItemsCache)
|
|
||||||
|
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 {
|
} else {
|
||||||
call _fnc_getItems;
|
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 _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),
|
QGVAR(checkPBOsAction),
|
||||||
@ -87,7 +88,7 @@ private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_col
|
|||||||
QGVAR(epilepsyFriendlyMode),
|
QGVAR(epilepsyFriendlyMode),
|
||||||
"CHECKBOX",
|
"CHECKBOX",
|
||||||
[LSTRING(EpilepsyFriendlyMode), LSTRING(EpilepsyFriendlyModeTooltip)],
|
[LSTRING(EpilepsyFriendlyMode), LSTRING(EpilepsyFriendlyModeTooltip)],
|
||||||
format ["ACE %1", localize LSTRING(DisplayName)],
|
_category,
|
||||||
false,
|
false,
|
||||||
2
|
2
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
@ -96,7 +97,45 @@ private _categoryColors = [_category, format ["| %1 |", LLSTRING(subcategory_col
|
|||||||
QGVAR(progressBarInfo),
|
QGVAR(progressBarInfo),
|
||||||
"LIST",
|
"LIST",
|
||||||
[LSTRING(progressBarInfoName), LSTRING(progressBarInfoDesc)],
|
[LSTRING(progressBarInfoName), LSTRING(progressBarInfoDesc)],
|
||||||
format ["ACE %1", localize LSTRING(DisplayName)],
|
_category,
|
||||||
[[0, 1, 2], [LSTRING(None), LSTRING(progressBarInfoPercentage), LSTRING(progressBarInfoTime)], 2],
|
[[0, 1, 2], [LSTRING(None), LSTRING(progressBarInfoPercentage), LSTRING(progressBarInfoTime)], 2],
|
||||||
0
|
0
|
||||||
] call CBA_fnc_addSetting;
|
] 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;
|
||||||
|
@ -1828,5 +1828,90 @@
|
|||||||
<Chinese>下方</Chinese>
|
<Chinese>下方</Chinese>
|
||||||
<Turkish>Alt</Turkish>
|
<Turkish>Alt</Turkish>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Common_subcategory_sway">
|
||||||
|
<English>Weapon Sway</English>
|
||||||
|
<Japanese>手ぶれ</Japanese>
|
||||||
|
<Korean>무기 흔들림</Korean>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Common_EnableSway">
|
||||||
|
<English>Enable Weapon Sway</English>
|
||||||
|
<Japanese>手ぶれを有効化</Japanese>
|
||||||
|
<Korean>무기 흔들림 추가</Korean>
|
||||||
|
</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>
|
||||||
|
</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>
|
||||||
|
</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>
|
||||||
|
</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>
|
||||||
|
</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>
|
||||||
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
[tools]
|
|
||||||
pboProject_noBinConfig = true
|
|
||||||
sqfvm_skipConfigChecks = true
|
|
@ -1,15 +1,6 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
#include "\z\ace\addons\refuel\defines.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 CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
name = COMPONENT_NAME;
|
name = COMPONENT_NAME;
|
||||||
@ -34,5 +25,3 @@ class CfgPatches {
|
|||||||
|
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
[tools]
|
|
||||||
pboProject_noBinConfig = true
|
|
||||||
sqfvm_skipConfigChecks = true
|
|
@ -1,14 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#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 CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
name = COMPONENT_NAME;
|
name = COMPONENT_NAME;
|
||||||
@ -29,5 +20,3 @@ class CfgPatches {
|
|||||||
|
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
#include "CfgVehicles.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 StaticATWeapon;
|
||||||
class CUP_Metis_Base: AT_01_base_F {
|
class CUP_Metis_Base: StaticATWeapon {
|
||||||
class ace_csw {
|
class ace_csw {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
proxyWeapon = "CUP_proxy_AT13";
|
proxyWeapon = "CUP_proxy_AT13";
|
||||||
@ -142,7 +142,6 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class StaticATWeapon;
|
|
||||||
class CUP_TOW_TriPod_base: StaticATWeapon {
|
class CUP_TOW_TriPod_base: StaticATWeapon {
|
||||||
class ace_csw {
|
class ace_csw {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
|
@ -4,70 +4,104 @@
|
|||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_AGS30_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_AGS30_displayName">
|
||||||
<English>[CSW] AGS30 Belt</English>
|
<English>[CSW] AGS30 Belt</English>
|
||||||
<Japanese>[CSW] AGS30 ベルト</Japanese>
|
<Japanese>[CSW] AGS30 ベルト</Japanese>
|
||||||
|
<Russian>[CSW] Лента AGS 30</Russian>
|
||||||
|
<Korean>[CSW] AGS-30 벨트</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_MK19_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_MK19_displayName">
|
||||||
<English>[CSW] MK19 Belt</English>
|
<English>[CSW] MK19 Belt</English>
|
||||||
<Japanese>[CSW] Mk19 ベルト</Japanese>
|
<Japanese>[CSW] Mk19 ベルト</Japanese>
|
||||||
|
<Russian>[CSW] Лента Mk19</Russian>
|
||||||
|
<Korean>[CSW] Mk.19 벨트</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW_displayName">
|
||||||
<English>[CSW] TOW Tube</English>
|
<English>[CSW] TOW Tube</English>
|
||||||
<Japanese>[CSW] TOW チューブ</Japanese>
|
<Japanese>[CSW] TOW チューブ</Japanese>
|
||||||
|
<Russian>[CSW] Туба TOW</Russian>
|
||||||
|
<Korean>[CSW] TOW 튜브</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW2_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW2_displayName">
|
||||||
<English>[CSW] TOW2 Tube</English>
|
<English>[CSW] TOW2 Tube</English>
|
||||||
<Japanese>[CSW] TOW2 チューブ</Japanese>
|
<Japanese>[CSW] TOW2 チューブ</Japanese>
|
||||||
|
<Russian>[CSW] Туба TOW-2</Russian>
|
||||||
|
<Korean>[CSW] TOW2 튜브</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_PG9_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_PG9_displayName">
|
||||||
<English>[CSW] PG-9 Round</English>
|
<English>[CSW] PG-9 Round</English>
|
||||||
<Japanese>[CSW] PG-9 砲弾</Japanese>
|
<Japanese>[CSW] PG-9 砲弾</Japanese>
|
||||||
|
<Russian>[CSW] Снаряд ПГ-9</Russian>
|
||||||
|
<Korean>[CSW] PG-9 대전차고폭탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_OG9_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_OG9_displayName">
|
||||||
<English>[CSW] OG-9 Round</English>
|
<English>[CSW] OG-9 Round</English>
|
||||||
<Japanese>[CSW] OG-9 砲弾</Japanese>
|
<Japanese>[CSW] OG-9 砲弾</Japanese>
|
||||||
|
<Russian>[CSW] Снаряд OГ-9</Russian>
|
||||||
|
<Korean>[CSW] OG-9 고폭파편탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M1HE_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M1HE_displayName">
|
||||||
<English>[CSW] M1 HE</English>
|
<English>[CSW] M1 HE</English>
|
||||||
<Japanese>[CSW] M1 榴弾</Japanese>
|
<Japanese>[CSW] M1 榴弾</Japanese>
|
||||||
|
<Russian>[CSW] M1 HE</Russian>
|
||||||
|
<Korean>[CSW] M1 고폭탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M84Smoke_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M84Smoke_displayName">
|
||||||
<English>[CSW] M84 Smoke</English>
|
<English>[CSW] M84 Smoke</English>
|
||||||
<Japanese>[CSW] M84 白煙弾</Japanese>
|
<Japanese>[CSW] M84 白煙弾</Japanese>
|
||||||
|
<Russian>[CSW] M84 Дымовая</Russian>
|
||||||
|
<Korean>[CSW] M84 연막탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M60A2_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M60A2_displayName">
|
||||||
<English>[CSW] M60A2 WP</English>
|
<English>[CSW] M60A2 WP</English>
|
||||||
<Japanese>[CSW] M60A2 白リン弾</Japanese>
|
<Japanese>[CSW] M60A2 白リン弾</Japanese>
|
||||||
|
<Russian>[CSW] M60A2 WP</Russian>
|
||||||
|
<Korean>[CSW] M60A2 백린연막탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M67AT_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M67AT_displayName">
|
||||||
<English>[CSW] M67 AT Laser Guided</English>
|
<English>[CSW] M67 AT Laser Guided</English>
|
||||||
<Japanese>[CSW] M67 対戦車レーザー誘導弾</Japanese>
|
<Japanese>[CSW] M67 対戦車レーザー誘導弾</Japanese>
|
||||||
|
<Russian>[CSW] M67 AT Laser Guided</Russian>
|
||||||
|
<Korean>[CSW] M67 레이저유도 대전차탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M314Illum_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M314Illum_displayName">
|
||||||
<English>[CSW] M314 Illumination</English>
|
<English>[CSW] M314 Illumination</English>
|
||||||
<Japanese>[CSW] M314 照明弾</Japanese>
|
<Japanese>[CSW] M314 照明弾</Japanese>
|
||||||
|
<Russian>[CSW] M314 Осветительная</Russian>
|
||||||
|
<Korean>[CSW] M314 조명탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_3OF56_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_3OF56_displayName">
|
||||||
<English>[CSW] 3OF56 HE</English>
|
<English>[CSW] 3OF56 HE</English>
|
||||||
<Japanese>[CSW] 3OF56 榴弾</Japanese>
|
<Japanese>[CSW] 3OF56 榴弾</Japanese>
|
||||||
|
<Russian>[CSW] 3OF56 HE</Russian>
|
||||||
|
<Korean>[CSW] 3OF56 고폭탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_3OF69M_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_3OF69M_displayName">
|
||||||
<English>[CSW] 3OF69M Laser Guided</English>
|
<English>[CSW] 3OF69M Laser Guided</English>
|
||||||
<Japanese>[CSW] 3OF69M レーザー誘導弾</Japanese>
|
<Japanese>[CSW] 3OF69M レーザー誘導弾</Japanese>
|
||||||
|
<Russian>[CSW] 3OF69M Laser Guided</Russian>
|
||||||
|
<Korean>[CSW] 3OF69M 레이저유도탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmWP_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmWP_displayName">
|
||||||
<English>[CSW] 122mm WP</English>
|
<English>[CSW] 122mm WP</English>
|
||||||
<Japanese>[CSW] 122mm 白リン弾</Japanese>
|
<Japanese>[CSW] 122mm 白リン弾</Japanese>
|
||||||
|
<Russian>[CSW] 122mm WP</Russian>
|
||||||
|
<Korean>[CSW] 122mm 백린탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmSmoke_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmSmoke_displayName">
|
||||||
<English>[CSW] D-462 Smoke</English>
|
<English>[CSW] D-462 Smoke</English>
|
||||||
<Japanese>[CSW] D-462 白煙弾</Japanese>
|
<Japanese>[CSW] D-462 白煙弾</Japanese>
|
||||||
|
<Russian>[CSW] D-462 Дымовая</Russian>
|
||||||
|
<Korean>[CSW] D-462 연막탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmIllum_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmIllum_displayName">
|
||||||
<English>[CSW] S-463 Illumination</English>
|
<English>[CSW] S-463 Illumination</English>
|
||||||
<Japanese>[CSW] S-463 照明弾</Japanese>
|
<Japanese>[CSW] S-463 照明弾</Japanese>
|
||||||
|
<Russian>[CSW] S-463 Осветительная</Russian>
|
||||||
|
<Korean>[CSW] S-463 조명탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmAT_displayName">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_122mmAT_displayName">
|
||||||
<English>[CSW] BK-6M HEAT</English>
|
<English>[CSW] BK-6M HEAT</English>
|
||||||
<Japanese>[CSW] BK-6M HEAT弾</Japanese>
|
<Japanese>[CSW] BK-6M HEAT弾</Japanese>
|
||||||
|
<Russian>[CSW] BK-6M HEAT</Russian>
|
||||||
|
<Korean>[CSW] BK-6M 대전차고폭탄</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -107,12 +107,12 @@ class CfgWeapons {
|
|||||||
displayName = SUBCSTRING(CUP_NVG_GPNVG_tan_WP);
|
displayName = SUBCSTRING(CUP_NVG_GPNVG_tan_WP);
|
||||||
NVG_WP_PRESET;
|
NVG_WP_PRESET;
|
||||||
};
|
};
|
||||||
class CUP_GPNVG_green_WP: CUP_NVG_GPNVG_green {
|
class CUP_NVG_GPNVG_green_WP: CUP_NVG_GPNVG_green {
|
||||||
displayName = SUBCSTRING(CUP_GPNVG_green_WP);
|
displayName = SUBCSTRING(CUP_NVG_GPNVG_green_WP);
|
||||||
NVG_WP_PRESET;
|
NVG_WP_PRESET;
|
||||||
};
|
};
|
||||||
class CUP_GPNVG_winter_WP: CUP_NVG_GPNVG_winter {
|
class CUP_NVG_GPNVG_winter_WP: CUP_NVG_GPNVG_winter {
|
||||||
displayName = SUBCSTRING(CUP_GPNVG_winter_WP);
|
displayName = SUBCSTRING(CUP_NVG_GPNVG_winter_WP);
|
||||||
NVG_WP_PRESET;
|
NVG_WP_PRESET;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
|||||||
units[] = {};
|
units[] = {};
|
||||||
weapons[] = {
|
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_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;
|
requiredVersion = REQUIRED_VERSION;
|
||||||
requiredAddons[] = {
|
requiredAddons[] = {
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<German>AN/PVS-15 (grün, WP)</German>
|
<German>AN/PVS-15 (grün, WP)</German>
|
||||||
<Korean>AN/PVS-15 (녹색, 백색광)</Korean>
|
<Korean>AN/PVS-15 (녹색, 백색광)</Korean>
|
||||||
<French>AN/PVS-15 (vertes, WP)</French>
|
<French>AN/PVS-15 (vertes, WP)</French>
|
||||||
<Russian>AN/PVS-15 (Зелёный, БФ)</Russian>
|
<Russian>AN/PVS-15 (Чёрный, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_green_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_green_WP">
|
||||||
<English>AN/PVS-15 (Green, WP)</English>
|
<English>AN/PVS-15 (Green, WP)</English>
|
||||||
@ -29,7 +29,7 @@
|
|||||||
<German>AN/PVS-15 (Schwarz, WP)</German>
|
<German>AN/PVS-15 (Schwarz, WP)</German>
|
||||||
<Korean>AN/PVS-15 (검정, 백색광)</Korean>
|
<Korean>AN/PVS-15 (검정, 백색광)</Korean>
|
||||||
<French>AN/PVS-15 (noires, WP)</French>
|
<French>AN/PVS-15 (noires, WP)</French>
|
||||||
<Russian>AN/PVS-15 (Чёрный, БФ)</Russian>
|
<Russian>AN/PVS-15 (Зелёный, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_tan_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_tan_WP">
|
||||||
<English>AN/PVS-15 (Tan, WP)</English>
|
<English>AN/PVS-15 (Tan, WP)</English>
|
||||||
@ -39,12 +39,13 @@
|
|||||||
<German>AN/PVS-15 (hellbraun, WP)</German>
|
<German>AN/PVS-15 (hellbraun, WP)</German>
|
||||||
<Korean>AN/PVS-15 (황갈색, 백색광)</Korean>
|
<Korean>AN/PVS-15 (황갈색, 백색광)</Korean>
|
||||||
<French>AN/PVS-15 (marron clair, WP)</French>
|
<French>AN/PVS-15 (marron clair, WP)</French>
|
||||||
<Russian>AN/PVS-15 (желтовато-коричневый, БФ)</Russian>
|
<Russian>AN/PVS-15 (Желтовато-коричневый, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_winter_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_PVS15_winter_WP">
|
||||||
<English>AN/PVS-15 (Winter, WP)</English>
|
<English>AN/PVS-15 (Winter, WP)</English>
|
||||||
<Japanese>AN/PVS-15 (冬季迷彩, WP)</Japanese>
|
<Japanese>AN/PVS-15 (冬季迷彩, WP)</Japanese>
|
||||||
<Korean>AN/PVS-15 (설상, WP)</Korean>
|
<Korean>AN/PVS-15 (설상, 백색광)</Korean>
|
||||||
|
<Russian>AN/PVS-15 (Белый, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_black_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_black_WP">
|
||||||
<English>GPNVG (Black, WP)</English>
|
<English>GPNVG (Black, WP)</English>
|
||||||
@ -54,7 +55,7 @@
|
|||||||
<German>GPNVG (grün, WP)</German>
|
<German>GPNVG (grün, WP)</German>
|
||||||
<Korean>GPNVG (녹색, 백색광)</Korean>
|
<Korean>GPNVG (녹색, 백색광)</Korean>
|
||||||
<French>GPNVG (vertes, WP)</French>
|
<French>GPNVG (vertes, WP)</French>
|
||||||
<Russian>GPNVG (Зелёный, БФ)</Russian>
|
<Russian>GPNVG (Чёрный, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_tan_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_tan_WP">
|
||||||
<English>GPNVG (Tan, WP)</English>
|
<English>GPNVG (Tan, WP)</English>
|
||||||
@ -64,9 +65,9 @@
|
|||||||
<German>GPNVG (hellbraun, WP)</German>
|
<German>GPNVG (hellbraun, WP)</German>
|
||||||
<Korean>GPNVG (황갈색, 백색광)</Korean>
|
<Korean>GPNVG (황갈색, 백색광)</Korean>
|
||||||
<French>GPNVG (marron clair, WP)</French>
|
<French>GPNVG (marron clair, WP)</French>
|
||||||
<Russian>GPNVG (желтовато-коричневый, БФ)</Russian>
|
<Russian>GPNVG (Желтовато-коричневый, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_GPNVG_green_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_green_WP">
|
||||||
<English>GPNVG (Green, WP)</English>
|
<English>GPNVG (Green, WP)</English>
|
||||||
<Japanese>GPNVG (ブラック、白色蛍光)</Japanese>
|
<Japanese>GPNVG (ブラック、白色蛍光)</Japanese>
|
||||||
<Italian>GPNVG (Nero, FB)</Italian>
|
<Italian>GPNVG (Nero, FB)</Italian>
|
||||||
@ -74,12 +75,13 @@
|
|||||||
<German>GPNVG (Schwarz, WP)</German>
|
<German>GPNVG (Schwarz, WP)</German>
|
||||||
<Korean>GPNVG (검정, 백색광)</Korean>
|
<Korean>GPNVG (검정, 백색광)</Korean>
|
||||||
<French>GPNVG (noires, WP)</French>
|
<French>GPNVG (noires, WP)</French>
|
||||||
<Russian>GPNVG (Чёрный, БФ)</Russian>
|
<Russian>GPNVG (Зелёный, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_GPNVG_winter_WP">
|
<Key ID="STR_ACE_Compat_CUP_Weapons_nightvision_CUP_NVG_GPNVG_winter_WP">
|
||||||
<English>GPNVG (Winter, WP)</English>
|
<English>GPNVG (Winter, WP)</English>
|
||||||
<Japanese>GPNVG (冬季迷彩, WP)</Japanese>
|
<Japanese>GPNVG (冬季迷彩, WP)</Japanese>
|
||||||
<Korean>GPNVG (설상, WP)</Korean>
|
<Korean>GPNVG (설상, 백색광)</Korean>
|
||||||
|
<Russian>AN/PVS-15 (Белый, БФ)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,14 +1,5 @@
|
|||||||
#include "script_component.hpp"
|
#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 CfgPatches {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
name = COMPONENT_NAME;
|
name = COMPONENT_NAME;
|
||||||
@ -27,5 +18,3 @@ class CfgPatches {
|
|||||||
#include "CfgMagazines.hpp"
|
#include "CfgMagazines.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -10,4 +10,4 @@ GVAR(deployPFH) = -1;
|
|||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(vehicleDamage), {_this call FUNC(vehicleDamage)}] call CBA_fnc_addEventHandler;
|
[QGVAR(vehicleDamage), LINKFUNC(vehicleDamage)] call CBA_fnc_addEventHandler;
|
||||||
|
@ -179,7 +179,7 @@
|
|||||||
<Italian>Scorta di munizioni</Italian>
|
<Italian>Scorta di munizioni</Italian>
|
||||||
<Korean>탄약 보관</Korean>
|
<Korean>탄약 보관</Korean>
|
||||||
<Polish>Magazyn amunicji</Polish>
|
<Polish>Magazyn amunicji</Polish>
|
||||||
<Japanese>弾薬の格納場所</Japanese>
|
<Japanese>弾薬保管位置</Japanese>
|
||||||
<Chinesesimp>弹药存储</Chinesesimp>
|
<Chinesesimp>弹药存储</Chinesesimp>
|
||||||
<Russian>Хранилище боеприпасов</Russian>
|
<Russian>Хранилище боеприпасов</Russian>
|
||||||
<Spanish>Almacenamiento de munición</Spanish>
|
<Spanish>Almacenamiento de munición</Spanish>
|
||||||
@ -192,7 +192,7 @@
|
|||||||
<Italian>Determina se ulteriori caricatori verranno stoccati sul suolo o in una cassa di munizioni.</Italian>
|
<Italian>Determina se ulteriori caricatori verranno stoccati sul suolo o in una cassa di munizioni.</Italian>
|
||||||
<Korean>여분의 탄약을 지면 또는 탄약 상자에 넣을 지 결정합니다.</Korean>
|
<Korean>여분의 탄약을 지면 또는 탄약 상자에 넣을 지 결정합니다.</Korean>
|
||||||
<Polish>Decyduje, czy dodatkowe magazynki przechowywane są na ziemi, czy w skrzynce z amunicją.</Polish>
|
<Polish>Decyduje, czy dodatkowe magazynki przechowywane są na ziemi, czy w skrzynce z amunicją.</Polish>
|
||||||
<Japanese>追加の弾倉を地面に配置するか、弾薬箱内に保管するかを設定します。</Japanese>
|
<Japanese>追加の弾倉を地面に直接配置するか、弾薬箱内に保管するかを設定します。</Japanese>
|
||||||
<Chinesesimp>设置多余的弹夹是存放在地面上还是弹药箱内</Chinesesimp>
|
<Chinesesimp>设置多余的弹夹是存放在地面上还是弹药箱内</Chinesesimp>
|
||||||
<Russian>Определяет будут ли дополнительные магазины лежать на земле или внутри хранилища</Russian>
|
<Russian>Определяет будут ли дополнительные магазины лежать на земле или внутри хранилища</Russian>
|
||||||
<Spanish>Determina si los cargadores extra son almacenados en el suelo o en una caja de munición</Spanish>
|
<Spanish>Determina si los cargadores extra son almacenados en el suelo o en una caja de munición</Spanish>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
[QGVAR(dropItems), FUNC(eventTargetStart)] call CBA_fnc_addEventHandler;
|
[QGVAR(dropItems), LINKFUNC(eventTargetStart)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(debugCallback), FUNC(eventCallerFinish)] call CBA_fnc_addEventHandler;
|
[QGVAR(debugCallback), LINKFUNC(eventCallerFinish)] call CBA_fnc_addEventHandler;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
[QGVAR(showDogtag), DFUNC(showDogtag)] call CBA_fnc_addEventHandler;
|
[QGVAR(showDogtag), LINKFUNC(showDogtag)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(sendDogtagData), DFUNC(sendDogtagData)] call CBA_fnc_addEventHandler;
|
[QGVAR(sendDogtagData), LINKFUNC(sendDogtagData)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(getDogtagItem), DFUNC(getDogtagItem)] call CBA_fnc_addEventHandler;
|
[QGVAR(getDogtagItem), LINKFUNC(getDogtagItem)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(addDogtagItem), DFUNC(addDogtagItem)] call CBA_fnc_addEventHandler;
|
[QGVAR(addDogtagItem), LINKFUNC(addDogtagItem)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Add actions and event handlers only if ace_medical is loaded
|
// Add actions and event handlers only if ace_medical is loaded
|
||||||
// - Adding actions via config would create a dependency
|
// - Adding actions via config would create a dependency
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<Polish>Nieśmiertelnik</Polish>
|
<Polish>Nieśmiertelnik</Polish>
|
||||||
<Russian>Жетон</Russian>
|
<Russian>Жетон</Russian>
|
||||||
<Czech>Identifikační známka</Czech>
|
<Czech>Identifikační známka</Czech>
|
||||||
<Japanese>認識票</Japanese>
|
<Japanese>ドッグタグ</Japanese>
|
||||||
<German>Erkennungsmarke</German>
|
<German>Erkennungsmarke</German>
|
||||||
<Korean>군번줄</Korean>
|
<Korean>군번줄</Korean>
|
||||||
<French>Plaque d'identification</French>
|
<French>Plaque d'identification</French>
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<Polish>Sprawdź nieśmiertelnik</Polish>
|
<Polish>Sprawdź nieśmiertelnik</Polish>
|
||||||
<Russian>Проверить жетон</Russian>
|
<Russian>Проверить жетон</Russian>
|
||||||
<Czech>Zkontrolovat známku</Czech>
|
<Czech>Zkontrolovat známku</Czech>
|
||||||
<Japanese>認識票を確認</Japanese>
|
<Japanese>ドッグタグを確認</Japanese>
|
||||||
<German>Erkennungsmarke prüfen</German>
|
<German>Erkennungsmarke prüfen</German>
|
||||||
<Korean>군번줄 확인</Korean>
|
<Korean>군번줄 확인</Korean>
|
||||||
<French>Vérifier la plaque d'identification</French>
|
<French>Vérifier la plaque d'identification</French>
|
||||||
@ -54,7 +54,7 @@
|
|||||||
<Polish>Zabierz</Polish>
|
<Polish>Zabierz</Polish>
|
||||||
<Russian>Взять</Russian>
|
<Russian>Взять</Russian>
|
||||||
<Czech>Vezmi</Czech>
|
<Czech>Vezmi</Czech>
|
||||||
<Japanese>取る</Japanese>
|
<Japanese>拾う</Japanese>
|
||||||
<German>Nehmen</German>
|
<German>Nehmen</German>
|
||||||
<Korean>회수</Korean>
|
<Korean>회수</Korean>
|
||||||
<French>Prendre</French>
|
<French>Prendre</French>
|
||||||
@ -70,7 +70,7 @@
|
|||||||
<Polish>Zabrałeś nieśmiertelnik %1...</Polish>
|
<Polish>Zabrałeś nieśmiertelnik %1...</Polish>
|
||||||
<Russian>Жетон снят с %1...</Russian>
|
<Russian>Жетон снят с %1...</Russian>
|
||||||
<Czech>Sebral jsem známku od %1...</Czech>
|
<Czech>Sebral jsem známku od %1...</Czech>
|
||||||
<Japanese>%1 から認識票を取っています・・・</Japanese>
|
<Japanese>%1 からドッグタグを回収しています・・・</Japanese>
|
||||||
<German>Erkennungsmarke von %1 genommen...</German>
|
<German>Erkennungsmarke von %1 genommen...</German>
|
||||||
<Korean>%1(으)로부터 군번줄을 회수했습니다...</Korean>
|
<Korean>%1(으)로부터 군번줄을 회수했습니다...</Korean>
|
||||||
<French>Plaque d'identification prise sur %1...</French>
|
<French>Plaque d'identification prise sur %1...</French>
|
||||||
@ -86,7 +86,7 @@
|
|||||||
<Polish>Ktoś już zabrał ten nieśmiertelnik...</Polish>
|
<Polish>Ktoś już zabrał ten nieśmiertelnik...</Polish>
|
||||||
<Russian>Кто-то уже забрал жетон...</Russian>
|
<Russian>Кто-то уже забрал жетон...</Russian>
|
||||||
<Czech>Někdo jiný už vzal identifikační známku...</Czech>
|
<Czech>Někdo jiný už vzal identifikační známku...</Czech>
|
||||||
<Japanese>誰かが既に認識票を取ったようだ・・・</Japanese>
|
<Japanese>既に誰かがドッグタグを回収したようだ・・・</Japanese>
|
||||||
<German>Jemand anderes hat bereits die Erkennungsmarke genommen...</German>
|
<German>Jemand anderes hat bereits die Erkennungsmarke genommen...</German>
|
||||||
<Korean>누군가 이미 군번줄을 회수해갔습니다...</Korean>
|
<Korean>누군가 이미 군번줄을 회수해갔습니다...</Korean>
|
||||||
<French>Quelqu'un d'autre a déjà pris la plaque d'identification...</French>
|
<French>Quelqu'un d'autre a déjà pris la plaque d'identification...</French>
|
||||||
@ -102,7 +102,7 @@
|
|||||||
<German>Anzeige um Erkennungsmarke zu überprüfen</German>
|
<German>Anzeige um Erkennungsmarke zu überprüfen</German>
|
||||||
<Chinese>在畫面中顯示檢查兵籍牌</Chinese>
|
<Chinese>在畫面中顯示檢查兵籍牌</Chinese>
|
||||||
<Chinesesimp>在画面中显示检查兵籍牌</Chinesesimp>
|
<Chinesesimp>在画面中显示检查兵籍牌</Chinesesimp>
|
||||||
<Japanese>確認中の認識票を画面上に表示します</Japanese>
|
<Japanese>確認中のドッグタグを画面上に表示します</Japanese>
|
||||||
<Italian>Indicatore su schermo per il controllo delle piastrine</Italian>
|
<Italian>Indicatore su schermo per il controllo delle piastrine</Italian>
|
||||||
<Polish>Wyświetlacz ekranowy dla sprawdzania nieśmiertelników</Polish>
|
<Polish>Wyświetlacz ekranowy dla sprawdzania nieśmiertelników</Polish>
|
||||||
<Russian>Экран для проверки жетонов</Russian>
|
<Russian>Экран для проверки жетонов</Russian>
|
||||||
|
@ -53,7 +53,7 @@ _unit setVariable [QGVAR(releaseActionID), [
|
|||||||
] call EFUNC(common,addActionEventHandler)];
|
] call EFUNC(common,addActionEventHandler)];
|
||||||
|
|
||||||
// Add anim changed EH
|
// Add anim changed EH
|
||||||
[_unit, "AnimChanged", FUNC(handleAnimChanged), [_unit]] call CBA_fnc_addBISEventHandler;
|
[_unit, "AnimChanged", LINKFUNC(handleAnimChanged), [_unit]] call CBA_fnc_addBISEventHandler;
|
||||||
|
|
||||||
// Prevent UAVs from firing
|
// Prevent UAVs from firing
|
||||||
private _UAVCrew = _target call EFUNC(common,getVehicleUAVCrew);
|
private _UAVCrew = _target call EFUNC(common,getVehicleUAVCrew);
|
||||||
@ -67,7 +67,4 @@ if (_UAVCrew isNotEqualTo []) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Check everything
|
// Check everything
|
||||||
[FUNC(carryObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(carryObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
// Reset current dragging height
|
|
||||||
GVAR(currentHeightChange) = 0;
|
|
||||||
|
@ -35,15 +35,35 @@ if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {
|
|||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Drop if the crate is destroyed OR target moved away from carrier (weapon disassembled) OR carrier starts limping
|
// Drop if the target is destroyed
|
||||||
if !(alive _target && {_unit distance _target <= 10} && {_unit getHitPointDamage "HitLegs" < 0.5}) exitWith {
|
if (!alive _target) exitWith {
|
||||||
TRACE_2("dead/distance",_unit,_target);
|
TRACE_2("dead",_unit,_target);
|
||||||
|
|
||||||
if ((_unit distance _target > 10) && {(CBA_missionTime - _startTime) < 1}) exitWith {
|
[_unit, _target] call FUNC(dropObject_carry);
|
||||||
// attachTo seems to have some kind of network delay and target can return an odd position during the first few frames,
|
|
||||||
// So wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos)
|
_unit setVariable [QGVAR(hint), nil];
|
||||||
TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime);
|
call EFUNC(interaction,hideMouseHint);
|
||||||
};
|
|
||||||
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Drop if the target moved away from carrier (e.g. weapon disassembled)
|
||||||
|
// attachTo seems to have some kind of network delay and target can return an odd position during the first few frames,
|
||||||
|
// So wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos)
|
||||||
|
if (_unit distance _target > 10 && {(CBA_missionTime - _startTime) >= 1}) exitWith {
|
||||||
|
TRACE_2("distance",_unit,_target);
|
||||||
|
|
||||||
|
[_unit, _target] call FUNC(dropObject_carry);
|
||||||
|
|
||||||
|
_unit setVariable [QGVAR(hint), nil];
|
||||||
|
call EFUNC(interaction,hideMouseHint);
|
||||||
|
|
||||||
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Drop if the carrier starts limping
|
||||||
|
if (_unit getHitPointDamage "HitLegs" >= 0.5) exitWith {
|
||||||
|
TRACE_2("limping",_unit,_target);
|
||||||
|
|
||||||
[_unit, _target] call FUNC(dropObject_carry);
|
[_unit, _target] call FUNC(dropObject_carry);
|
||||||
|
|
||||||
@ -54,7 +74,7 @@ if !(alive _target && {_unit distance _target <= 10} && {_unit getHitPointDamage
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Drop static if crew is in it (UAV crew deletion may take a few frames)
|
// Drop static if crew is in it (UAV crew deletion may take a few frames)
|
||||||
if (_target isKindOf "StaticWeapon" && {(crew _target) isNotEqualTo []} && {!(_target getVariable [QGVAR(isUAV), false])}) then {
|
if (_target isKindOf "StaticWeapon" && {!(_target getVariable [QGVAR(isUAV), false])} && {(crew _target) isNotEqualTo []}) exitWith {
|
||||||
TRACE_2("static weapon crewed",_unit,_target);
|
TRACE_2("static weapon crewed",_unit,_target);
|
||||||
|
|
||||||
[_unit, _target] call FUNC(dropObject_carry);
|
[_unit, _target] call FUNC(dropObject_carry);
|
||||||
|
@ -57,7 +57,7 @@ GVAR(releaseActionID) = [0xF1, [false, false, false], {
|
|||||||
["", LLSTRING(Drop)] call EFUNC(interaction,showMouseHint);
|
["", LLSTRING(Drop)] call EFUNC(interaction,showMouseHint);
|
||||||
|
|
||||||
// Block firing
|
// Block firing
|
||||||
if !(GVAR(dragAndFire)) then {
|
if (!GVAR(dragAndFire)) then {
|
||||||
_unit setVariable [QGVAR(blockFire), [
|
_unit setVariable [QGVAR(blockFire), [
|
||||||
_unit, "DefaultAction",
|
_unit, "DefaultAction",
|
||||||
{true},
|
{true},
|
||||||
@ -66,10 +66,11 @@ if !(GVAR(dragAndFire)) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Add anim changed EH
|
// Add anim changed EH
|
||||||
[_unit, "AnimChanged", FUNC(handleAnimChanged), [_unit]] call CBA_fnc_addBISEventHandler;
|
[_unit, "AnimChanged", LINKFUNC(handleAnimChanged), [_unit]] call CBA_fnc_addBISEventHandler;
|
||||||
|
|
||||||
// Prevent UAVs from firing
|
// Prevent UAVs from firing
|
||||||
private _UAVCrew = _target call EFUNC(common,getVehicleUAVCrew);
|
private _UAVCrew = _target call EFUNC(common,getVehicleUAVCrew);
|
||||||
|
|
||||||
if (_UAVCrew isNotEqualTo []) then {
|
if (_UAVCrew isNotEqualTo []) then {
|
||||||
{
|
{
|
||||||
_target deleteVehicleCrew _x;
|
_target deleteVehicleCrew _x;
|
||||||
@ -79,10 +80,7 @@ if (_UAVCrew isNotEqualTo []) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Check everything
|
// Check everything
|
||||||
[FUNC(dragObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(dragObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
// Reset current dragging height.
|
|
||||||
GVAR(currentHeightChange) = 0;
|
|
||||||
|
|
||||||
// Fixes not being able to move when in combat pace
|
// Fixes not being able to move when in combat pace
|
||||||
[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
|
[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
|
||||||
|
@ -31,15 +31,20 @@ if !(_unit getVariable [QGVAR(isDragging), false]) exitWith {
|
|||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Drop if the crate is destroyed OR (target moved away from carrier (weapon disasembled))
|
// Drop if the target is destroyed
|
||||||
if (!alive _target || {_unit distance _target > 10}) then {
|
if (!alive _target) exitWith {
|
||||||
TRACE_2("dead/distance",_unit,_target);
|
TRACE_2("dead",_unit,_target);
|
||||||
|
|
||||||
if ((_unit distance _target > 10) && {(CBA_missionTime - _startTime) < 1}) exitWith {
|
[_unit, _target] call FUNC(dropObject);
|
||||||
// attachTo seems to have some kind of network delay and target can return an odd position during the first few frames,
|
|
||||||
// So wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos)
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime);
|
};
|
||||||
};
|
|
||||||
|
// Drop if the target moved away from carrier (e.g. weapon disassembled)
|
||||||
|
// attachTo seems to have some kind of network delay and target can return an odd position during the first few frames,
|
||||||
|
// So wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos)
|
||||||
|
if (_unit distance _target > 10 && {(CBA_missionTime - _startTime) >= 1}) exitWith {
|
||||||
|
TRACE_2("distance",_unit,_target);
|
||||||
|
|
||||||
[_unit, _target] call FUNC(dropObject);
|
[_unit, _target] call FUNC(dropObject);
|
||||||
|
|
||||||
@ -47,7 +52,7 @@ if (!alive _target || {_unit distance _target > 10}) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Drop static if crew is in it (UAV crew deletion may take a few frames)
|
// Drop static if crew is in it (UAV crew deletion may take a few frames)
|
||||||
if (_target isKindOf "StaticWeapon" && {(crew _target) isNotEqualTo []} && {!(_target getVariable [QGVAR(isUAV), false])}) then {
|
if (_target isKindOf "StaticWeapon" && {!(_target getVariable [QGVAR(isUAV), false])} && {(crew _target) isNotEqualTo []}) exitWith {
|
||||||
TRACE_2("static weapon crewed",_unit,_target);
|
TRACE_2("static weapon crewed",_unit,_target);
|
||||||
|
|
||||||
[_unit, _target] call FUNC(dropObject);
|
[_unit, _target] call FUNC(dropObject);
|
||||||
|
@ -26,7 +26,7 @@ if (!isNil QGVAR(releaseActionID)) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Stop blocking
|
// Stop blocking
|
||||||
if !(GVAR(dragAndFire)) then {
|
if (!GVAR(dragAndFire)) then {
|
||||||
[_unit, "DefaultAction", _unit getVariable [QGVAR(blockFire), -1]] call EFUNC(common,removeActionEventHandler);
|
[_unit, "DefaultAction", _unit getVariable [QGVAR(blockFire), -1]] call EFUNC(common,removeActionEventHandler);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,6 +82,8 @@ if (_unit getVariable ["ACE_isUnconscious", false]) then {
|
|||||||
|
|
||||||
// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0])
|
// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0])
|
||||||
if (_target getVariable [QGVAR(isUAV), false]) then {
|
if (_target getVariable [QGVAR(isUAV), false]) then {
|
||||||
|
_target setVariable [QGVAR(isUAV), nil, true];
|
||||||
|
|
||||||
[{
|
[{
|
||||||
params ["_target"];
|
params ["_target"];
|
||||||
if (!alive _target) exitWith {};
|
if (!alive _target) exitWith {};
|
||||||
|
@ -44,7 +44,7 @@ if (_tryLoad && {!(_target isKindOf "CAManBase")} && {["ace_cargo"] call EFUNC(c
|
|||||||
|
|
||||||
// Fix anim when aborting carrying persons
|
// Fix anim when aborting carrying persons
|
||||||
if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then {
|
if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then {
|
||||||
if (vehicle _unit == _unit && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
|
if (isNull objectParent _unit && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
|
||||||
[_unit, "", 2] call EFUNC(common,doAnimation);
|
[_unit, "", 2] call EFUNC(common,doAnimation);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -88,6 +88,8 @@ if !(_target isKindOf "CAManBase") then {
|
|||||||
|
|
||||||
// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0])
|
// Recreate UAV crew (add a frame delay or this may cause the vehicle to be moved to [0,0,0])
|
||||||
if (_target getVariable [QGVAR(isUAV), false]) then {
|
if (_target getVariable [QGVAR(isUAV), false]) then {
|
||||||
|
_target setVariable [QGVAR(isUAV), nil, true];
|
||||||
|
|
||||||
[{
|
[{
|
||||||
params ["_target"];
|
params ["_target"];
|
||||||
if (!alive _target) exitWith {};
|
if (!alive _target) exitWith {};
|
||||||
|
@ -27,7 +27,7 @@ private _carriedItem = _unit getVariable [QGVAR(carriedObject), objNull];
|
|||||||
// Disabled for persons
|
// Disabled for persons
|
||||||
if (_carriedItem isKindOf "CAManBase") exitWith {false};
|
if (_carriedItem isKindOf "CAManBase") exitWith {false};
|
||||||
|
|
||||||
if !(CBA_events_control) then {
|
if (!CBA_events_control) then {
|
||||||
// Raise/lower
|
// Raise/lower
|
||||||
// Move carried item 15 cm per scroll interval
|
// Move carried item 15 cm per scroll interval
|
||||||
_scrollAmount = _scrollAmount * 0.15;
|
_scrollAmount = _scrollAmount * 0.15;
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
// If not dragging, don't do anything
|
// If not carrying, don't do anything
|
||||||
if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {};
|
if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {};
|
||||||
|
|
||||||
// If action is already present, don't add it again
|
// If action is already present, don't add it again
|
||||||
|
@ -31,6 +31,9 @@ if !(_target getVariable [QGVAR(ignoreWeightCarry), false]) then {
|
|||||||
|
|
||||||
// Exit if object weight is over global var value
|
// Exit if object weight is over global var value
|
||||||
if (_weight > GETMVAR(ACE_maxWeightCarry,1E11)) exitWith {
|
if (_weight > GETMVAR(ACE_maxWeightCarry,1E11)) exitWith {
|
||||||
|
// Release claim on object
|
||||||
|
[objNull, _target, true] call EFUNC(common,claim);
|
||||||
|
|
||||||
[LLSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
|
[LLSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -46,7 +49,7 @@ if (_target isKindOf "CAManBase") then {
|
|||||||
_primaryWeapon = "ACE_FakePrimaryWeapon";
|
_primaryWeapon = "ACE_FakePrimaryWeapon";
|
||||||
};
|
};
|
||||||
|
|
||||||
// Select primary, otherwise the drag animation actions don't work
|
// Select primary, otherwise the carry animation actions don't work
|
||||||
_unit selectWeapon _primaryWeapon;
|
_unit selectWeapon _primaryWeapon;
|
||||||
|
|
||||||
// Move a bit closer and adjust direction when trying to pick up a person
|
// Move a bit closer and adjust direction when trying to pick up a person
|
||||||
@ -81,7 +84,7 @@ _unit setVariable [QGVAR(isCarrying), true, true];
|
|||||||
// Required for aborting animation
|
// Required for aborting animation
|
||||||
_unit setVariable [QGVAR(carriedObject), _target, true];
|
_unit setVariable [QGVAR(carriedObject), _target, true];
|
||||||
|
|
||||||
[FUNC(startCarryPFH), 0.2, [_unit, _target, _timer]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(startCarryPFH), 0.2, [_unit, _target, _timer]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
// Disable collisions by setting the PhysX mass to almost zero
|
// Disable collisions by setting the PhysX mass to almost zero
|
||||||
private _mass = getMass _target;
|
private _mass = getMass _target;
|
||||||
|
@ -32,9 +32,9 @@ if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {
|
|||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Same as dragObjectPFH, checks if object is deleted or dead OR (target moved away from carrier (weapon disasembled))
|
// Drop if the target is destroyed, if the target moved away from carrier (e.g. weapon disassembled) or if the carrier starts limping
|
||||||
if (!alive _target || {_unit distance _target > 10}) then {
|
if !(alive _target && {_unit distance _target <= 10} && {_unit getHitPointDamage "HitLegs" < 0.5}) exitWith {
|
||||||
TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime);
|
TRACE_4("dead/distance/limping",_unit,_target,_timeOut,CBA_missionTime);
|
||||||
[_unit, _target] call FUNC(dropObject_carry);
|
[_unit, _target] call FUNC(dropObject_carry);
|
||||||
|
|
||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
@ -42,7 +42,7 @@ if (!alive _target || {_unit distance _target > 10}) then {
|
|||||||
|
|
||||||
// Handle persons vs. objects
|
// Handle persons vs. objects
|
||||||
if (_target isKindOf "CAManBase") then {
|
if (_target isKindOf "CAManBase") then {
|
||||||
// Drop if in timeout
|
// Carry person after timeout (animation takes a long time to finish)
|
||||||
if (CBA_missionTime > _timeOut) exitWith {
|
if (CBA_missionTime > _timeOut) exitWith {
|
||||||
TRACE_4("Start carry person",_unit,_target,_timeOut,CBA_missionTime);
|
TRACE_4("Start carry person",_unit,_target,_timeOut,CBA_missionTime);
|
||||||
[_unit, _target] call FUNC(carryObject);
|
[_unit, _target] call FUNC(carryObject);
|
||||||
@ -50,13 +50,13 @@ if (_target isKindOf "CAManBase") then {
|
|||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// Drop if in timeout
|
// Timeout: Drop target. CBA_missionTime, because anim length is linked to ingame time
|
||||||
if (CBA_missionTime > _timeOut) exitWith {
|
if (CBA_missionTime > _timeOut) exitWith {
|
||||||
TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime);
|
TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime);
|
||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
|
|
||||||
private _draggedObject = _unit getVariable [QGVAR(draggedObject), objNull];
|
private _carriedObject = _unit getVariable [QGVAR(carriedObject), objNull];
|
||||||
[_unit, _draggedObject] call FUNC(dropObject_carry);
|
[_unit, _carriedObject] call FUNC(dropObject_carry);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Wait for the unit to stand up
|
// Wait for the unit to stand up
|
||||||
|
@ -31,13 +31,16 @@ if !(_target getVariable [QGVAR(ignoreWeightDrag), false]) then {
|
|||||||
|
|
||||||
// Exit if object weight is over global var value
|
// Exit if object weight is over global var value
|
||||||
if (_weight > GETMVAR(ACE_maxWeightDrag,1E11)) exitWith {
|
if (_weight > GETMVAR(ACE_maxWeightDrag,1E11)) exitWith {
|
||||||
|
// Release claim on object
|
||||||
|
[objNull, _target, true] call EFUNC(common,claim);
|
||||||
|
|
||||||
[LLSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
|
[LLSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
|
||||||
private _primaryWeapon = primaryWeapon _unit;
|
private _primaryWeapon = primaryWeapon _unit;
|
||||||
|
|
||||||
// Add a primary weapon if the unit has none
|
// Add a primary weapon if the unit has none
|
||||||
if !(GVAR(dragAndFire)) then {
|
if (!GVAR(dragAndFire)) then {
|
||||||
if (_primaryWeapon == "") then {
|
if (_primaryWeapon == "") then {
|
||||||
_unit addWeapon "ACE_FakePrimaryWeapon";
|
_unit addWeapon "ACE_FakePrimaryWeapon";
|
||||||
_primaryWeapon = "ACE_FakePrimaryWeapon";
|
_primaryWeapon = "ACE_FakePrimaryWeapon";
|
||||||
@ -93,7 +96,7 @@ if (_target isKindOf "CAManBase") then {
|
|||||||
// Prevents dragging and carrying at the same time
|
// Prevents dragging and carrying at the same time
|
||||||
_unit setVariable [QGVAR(isDragging), true, true];
|
_unit setVariable [QGVAR(isDragging), true, true];
|
||||||
|
|
||||||
[FUNC(startDragPFH), 0.2, [_unit, _target, CBA_missionTime + 5]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(startDragPFH), 0.2, [_unit, _target, CBA_missionTime + 5]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
// Disable collisions by setting the physx mass to almost zero
|
// Disable collisions by setting the physx mass to almost zero
|
||||||
private _mass = getMass _target;
|
private _mass = getMass _target;
|
||||||
|
@ -32,15 +32,15 @@ if !(_unit getVariable [QGVAR(isDragging), false]) exitWith {
|
|||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Same as dragObjectPFH, checks if object is deleted, dead or target moved away from carrier (e.g. weapon disassembled)
|
// Drop if the target is destroyed or if the target moved away from carrier (e.g. weapon disassembled)
|
||||||
if (!alive _target || {_unit distance _target > 10}) then {
|
if (!alive _target || {_unit distance _target > 10}) exitWith {
|
||||||
TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime);
|
TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime);
|
||||||
[_unit, _target] call FUNC(dropObject);
|
[_unit, _target] call FUNC(dropObject);
|
||||||
|
|
||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Timeout: Do nothing, quit. CBA_missionTime, because anim length is linked to ingame time
|
// Timeout: Drop target. CBA_missionTime, because anim length is linked to ingame time
|
||||||
if (CBA_missionTime > _timeOut) exitWith {
|
if (CBA_missionTime > _timeOut) exitWith {
|
||||||
TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime);
|
TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime);
|
||||||
_idPFH call CBA_fnc_removePerFrameHandler;
|
_idPFH call CBA_fnc_removePerFrameHandler;
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
[LSTRING(allowRunWithLightweight_DisplayName), LSTRING(allowRunWithLightweight_Description)],
|
[LSTRING(allowRunWithLightweight_DisplayName), LSTRING(allowRunWithLightweight_Description)],
|
||||||
LLSTRING(SettingsName),
|
LLSTRING(SettingsName),
|
||||||
true,
|
true,
|
||||||
true
|
1
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
@ -30,5 +30,5 @@
|
|||||||
[LSTRING(skipContainerWeight_DisplayName), LSTRING(skipContainerWeight_Description)],
|
[LSTRING(skipContainerWeight_DisplayName), LSTRING(skipContainerWeight_Description)],
|
||||||
LLSTRING(SettingsName),
|
LLSTRING(SettingsName),
|
||||||
false,
|
false,
|
||||||
true
|
1
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(startDefuse), FUNC(startDefuse)] call CBA_fnc_addEventHandler;
|
[QGVAR(startDefuse), LINKFUNC(startDefuse)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
//When getting knocked out in medical, trigger deadman explosives:
|
//When getting knocked out in medical, trigger deadman explosives:
|
||||||
//Event is global, only run on server (ref: ace_medical_fnc_setUnconscious)
|
//Event is global, only run on server (ref: ace_medical_fnc_setUnconscious)
|
||||||
@ -57,6 +57,8 @@ if (isServer) then {
|
|||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
#include "initKeybinds.inc.sqf"
|
||||||
|
|
||||||
GVAR(PlacedCount) = 0;
|
GVAR(PlacedCount) = 0;
|
||||||
GVAR(Setup) = objNull;
|
GVAR(Setup) = objNull;
|
||||||
GVAR(pfeh_running) = false;
|
GVAR(pfeh_running) = false;
|
||||||
|
@ -8,7 +8,6 @@ PREP_RECOMPILE_START;
|
|||||||
#include "XEH_PREP.hpp"
|
#include "XEH_PREP.hpp"
|
||||||
PREP_RECOMPILE_END;
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
#include "initKeybinds.inc.sqf"
|
|
||||||
#include "initSettings.inc.sqf"
|
#include "initSettings.inc.sqf"
|
||||||
|
|
||||||
GVAR(activeTrigger) = "";
|
GVAR(activeTrigger) = "";
|
||||||
|
@ -24,7 +24,7 @@ if (isNull _explosive) exitWith {
|
|||||||
deleteVehicle _target;
|
deleteVehicle _target;
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
if (vehicle _unit != _unit || {(_unit call EFUNC(common,uniqueItems)) findAny GVAR(defusalKits) == -1}) exitWith {false};
|
if (!isNull objectParent _unit || {(_unit call EFUNC(common,uniqueItems)) findAny GVAR(defusalKits) == -1}) exitWith {false};
|
||||||
|
|
||||||
if (GVAR(RequireSpecialist) && {!([_unit] call EFUNC(Common,isEOD))}) exitWith {false};
|
if (GVAR(RequireSpecialist) && {!([_unit] call EFUNC(Common,isEOD))}) exitWith {false};
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ for "_i" from 1 to _ran do {
|
|||||||
};
|
};
|
||||||
if (_unit == ace_player) then {
|
if (_unit == ace_player) then {
|
||||||
ctrlSetText [1400,"Calling"];
|
ctrlSetText [1400,"Calling"];
|
||||||
[FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler);
|
[LINKFUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler);
|
||||||
} else {
|
} else {
|
||||||
private _explosive = [_code] call FUNC(getSpeedDialExplosive);
|
private _explosive = [_code] call FUNC(getSpeedDialExplosive);
|
||||||
if ((count _explosive) > 0) then {
|
if ((count _explosive) > 0) then {
|
||||||
|
@ -74,6 +74,7 @@
|
|||||||
<Italian>Detona Tutti sul Detonatore Attivo</Italian>
|
<Italian>Detona Tutti sul Detonatore Attivo</Italian>
|
||||||
<Russian>Подрыв всех на активном детонаторе</Russian>
|
<Russian>Подрыв всех на активном детонаторе</Russian>
|
||||||
<Japanese>選択した点火装置を全て起爆</Japanese>
|
<Japanese>選択した点火装置を全て起爆</Japanese>
|
||||||
|
<Korean>활성화된 격발기의 모든 것을 폭파</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_SetActiveTrigger">
|
<Key ID="STR_ACE_Explosives_SetActiveTrigger">
|
||||||
<English>Set Active Clacker</English>
|
<English>Set Active Clacker</English>
|
||||||
@ -81,6 +82,7 @@
|
|||||||
<Italian>Imposta Detonatore Attivo</Italian>
|
<Italian>Imposta Detonatore Attivo</Italian>
|
||||||
<Russian>Установить активный детонатор</Russian>
|
<Russian>Установить активный детонатор</Russian>
|
||||||
<Japanese>この点火装置を選択</Japanese>
|
<Japanese>この点火装置を選択</Japanese>
|
||||||
|
<Korean>격발기 활성 설정</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_CycleActiveTrigger">
|
<Key ID="STR_ACE_Explosives_CycleActiveTrigger">
|
||||||
<English>Cycle Active Clacker</English>
|
<English>Cycle Active Clacker</English>
|
||||||
@ -88,6 +90,7 @@
|
|||||||
<Italian>Cambia Detonatore Attivo</Italian>
|
<Italian>Cambia Detonatore Attivo</Italian>
|
||||||
<Russian>Цикл активного детонатора</Russian>
|
<Russian>Цикл активного детонатора</Russian>
|
||||||
<Japanese>点火装置を切り替え</Japanese>
|
<Japanese>点火装置を切り替え</Japanese>
|
||||||
|
<Korean>격발기 활성 전환</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_ActiveTrigger">
|
<Key ID="STR_ACE_Explosives_ActiveTrigger">
|
||||||
<English>Active Clacker</English>
|
<English>Active Clacker</English>
|
||||||
@ -95,6 +98,7 @@
|
|||||||
<Italian>Detonatore Attivo</Italian>
|
<Italian>Detonatore Attivo</Italian>
|
||||||
<Russian>Активный детонатор</Russian>
|
<Russian>Активный детонатор</Russian>
|
||||||
<Japanese>選択中の点火装置</Japanese>
|
<Japanese>選択中の点火装置</Japanese>
|
||||||
|
<Korean>격발기 활성</Korean>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DetonateCode">
|
<Key ID="STR_ACE_Explosives_DetonateCode">
|
||||||
<English>Explosive code: %1</English>
|
<English>Explosive code: %1</English>
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
[QGVAR(deployRopes), {
|
[QGVAR(deployRopes), LINKFUNC(deployRopes)] call CBA_fnc_addEventHandler;
|
||||||
_this call FUNC(deployRopes);
|
|
||||||
}] call CBA_fnc_addEventHandler;
|
|
||||||
|
|
||||||
[QGVAR(startFastRope), {
|
[QGVAR(startFastRope), {
|
||||||
[FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Keybinds
|
// Keybinds
|
||||||
|
@ -36,4 +36,4 @@ _vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true];
|
|||||||
//Start server PFH asap
|
//Start server PFH asap
|
||||||
[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call CBA_fnc_serverEvent;
|
[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call CBA_fnc_serverEvent;
|
||||||
moveOut _unit;
|
moveOut _unit;
|
||||||
[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, diag_tickTime]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, diag_tickTime]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
@ -20,7 +20,7 @@ _arguments params ["_unit", "", "_rope", "", "_timeToPlayRopeSound"];
|
|||||||
_rope params ["", "", "", "_dummy", "_hook"];
|
_rope params ["", "", "", "_dummy", "_hook"];
|
||||||
|
|
||||||
//Wait until the unit is actually outside of the helicopter
|
//Wait until the unit is actually outside of the helicopter
|
||||||
if (vehicle _unit != _unit) exitWith {};
|
if (!isNull objectParent _unit) exitWith {};
|
||||||
|
|
||||||
// dummy lost hook
|
// dummy lost hook
|
||||||
if (isNull _hook) exitWith {
|
if (isNull _hook) exitWith {
|
||||||
|
@ -20,7 +20,7 @@ _arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex", "_hasBeenAttached
|
|||||||
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook"];
|
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook"];
|
||||||
|
|
||||||
//Wait until the unit is actually outside of the helicopter
|
//Wait until the unit is actually outside of the helicopter
|
||||||
if (vehicle _unit != _unit) exitWith {};
|
if (!isNull objectParent _unit) exitWith {};
|
||||||
|
|
||||||
//Prevent teleport if hook has been deleted due to rope cut
|
//Prevent teleport if hook has been deleted due to rope cut
|
||||||
if (isNull _hook) exitWith {
|
if (isNull _hook) exitWith {
|
||||||
|
@ -72,5 +72,5 @@ if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(Airburst)) == 1) then {
|
|||||||
if (_zeroing < 50) exitWith {};
|
if (_zeroing < 50) exitWith {};
|
||||||
if (_zeroing > 1500) exitWith {};
|
if (_zeroing > 1500) exitWith {};
|
||||||
|
|
||||||
[FUNC(handleAirBurstAmmunitionPFH), 0, [_vehicle, _projectile, _zeroing]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(handleAirBurstAmmunitionPFH), 0, [_vehicle, _projectile, _zeroing]] call CBA_fnc_addPerFrameHandler;
|
||||||
};
|
};
|
||||||
|
@ -96,7 +96,7 @@ if !(hasInterface) exitWith {};
|
|||||||
] call CBA_fnc_addItemContextMenuOption;
|
] call CBA_fnc_addItemContextMenuOption;
|
||||||
|
|
||||||
// Add water source helpers when interaction menu is opened
|
// Add water source helpers when interaction menu is opened
|
||||||
["ace_interactMenuOpened", {call FUNC(addWaterSourceInteractions)}] call CBA_fnc_addEventHandler;
|
["ace_interactMenuOpened", LINKFUNC(addWaterSourceInteractions)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Add status modifiers
|
// Add status modifiers
|
||||||
if (["ace_medical"] call EFUNC(common,isModLoaded)) then {
|
if (["ace_medical"] call EFUNC(common,isModLoaded)) then {
|
||||||
@ -134,7 +134,7 @@ if !(hasInterface) exitWith {};
|
|||||||
["CAManBase", "respawn", LINKFUNC(handleRespawn)] call CBA_fnc_addClassEventHandler;
|
["CAManBase", "respawn", LINKFUNC(handleRespawn)] call CBA_fnc_addClassEventHandler;
|
||||||
|
|
||||||
// Start update loop
|
// Start update loop
|
||||||
[FUNC(update), CBA_missionTime + MP_SYNC_INTERVAL, 1] call CBA_fnc_waitAndExecute;
|
[LINKFUNC(update), CBA_missionTime + MP_SYNC_INTERVAL, 1] call CBA_fnc_waitAndExecute;
|
||||||
|
|
||||||
#ifdef DEBUG_MODE_FULL
|
#ifdef DEBUG_MODE_FULL
|
||||||
["ACE_player thirst", {ACE_player getVariable [QXGVAR(thirst), 0]}, [true, 0, 100]] call EFUNC(common,watchVariable);
|
["ACE_player thirst", {ACE_player getVariable [QXGVAR(thirst), 0]}, [true, 0, 100]] call EFUNC(common,watchVariable);
|
||||||
|
@ -25,7 +25,7 @@ private _player = ACE_player;
|
|||||||
|
|
||||||
// Exit if player is not alive or a virtual unit
|
// Exit if player is not alive or a virtual unit
|
||||||
if (!alive _player || {_player isKindOf "VirtualMan_F"}) exitWith {
|
if (!alive _player || {_player isKindOf "VirtualMan_F"}) exitWith {
|
||||||
[FUNC(update), _nextMpSync, 1] call CBA_fnc_waitAndExecute;
|
[LINKFUNC(update), _nextMpSync, 1] call CBA_fnc_waitAndExecute;
|
||||||
QGVAR(hud) cutFadeOut 0.5;
|
QGVAR(hud) cutFadeOut 0.5;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -73,4 +73,4 @@ if (!EGVAR(common,OldIsCamera) && {_thirst > XGVAR(hudShowLevel) || {_hunger > X
|
|||||||
QGVAR(hud) cutFadeOut 0.5;
|
QGVAR(hud) cutFadeOut 0.5;
|
||||||
};
|
};
|
||||||
|
|
||||||
[FUNC(update), _nextMpSync, 1] call CBA_fnc_waitAndExecute;
|
[LINKFUNC(update), _nextMpSync, 1] call CBA_fnc_waitAndExecute;
|
||||||
|
@ -11,7 +11,7 @@ if (!hasInterface) exitWith {};
|
|||||||
GVAR(fingersHash) = createHashMap;
|
GVAR(fingersHash) = createHashMap;
|
||||||
GVAR(pfeh_id) = -1;
|
GVAR(pfeh_id) = -1;
|
||||||
|
|
||||||
[QGVAR(fingered), {_this call FUNC(incomingFinger)}] call CBA_fnc_addEventHandler;
|
[QGVAR(fingered), LINKFUNC(incomingFinger)] call CBA_fnc_addEventHandler;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
//Add Keybind:
|
//Add Keybind:
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
[QGVAR(burn), FUNC(burn)] call CBA_fnc_addEventHandler;
|
[QGVAR(burn), LINKFUNC(burn)] call CBA_fnc_addEventHandler;
|
||||||
[QGVAR(playScream), {
|
[QGVAR(playScream), {
|
||||||
params ["_scream", "_source"];
|
params ["_scream", "_source"];
|
||||||
// only play sound if enabled in settings
|
// only play sound if enabled in settings and enabled for the unit
|
||||||
if (GVAR(enableScreams)) then {
|
if (GVAR(enableScreams) && {_source getVariable [QGVAR(enableScreams), true]}) then {
|
||||||
_source say3D _scream;
|
_source say3D _scream;
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
@ -31,8 +31,7 @@
|
|||||||
[GVAR(fireSources), _key] call CBA_fnc_hashRem;
|
[GVAR(fireSources), _key] call CBA_fnc_hashRem;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[{ _this call FUNC(fireManagerPFH) }, FIRE_MANAGER_PFH_DELAY, []] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(fireManagerPFH), FIRE_MANAGER_PFH_DELAY, []] call CBA_fnc_addPerFrameHandler;
|
||||||
GVAR(fireSources) = [[], nil] call CBA_fnc_hashCreate;
|
GVAR(fireSources) = [[], nil] call CBA_fnc_hashCreate;
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ if (_isBurning) exitWith {};
|
|||||||
|
|
||||||
private _burnIndicatorPFH = _unit getVariable [QGVAR(burnUIPFH), -1];
|
private _burnIndicatorPFH = _unit getVariable [QGVAR(burnUIPFH), -1];
|
||||||
if (_unit isEqualTo ace_player && { _isThisUnitAlive } && { _burnIndicatorPFH < 0 }) then {
|
if (_unit isEqualTo ace_player && { _isThisUnitAlive } && { _burnIndicatorPFH < 0 }) then {
|
||||||
_burnIndicatorPFH = [FUNC(burnIndicator), 1, _unit] call CBA_fnc_addPerFrameHandler;
|
_burnIndicatorPFH = [LINKFUNC(burnIndicator), 1, _unit] call CBA_fnc_addPerFrameHandler;
|
||||||
_unit setVariable [QGVAR(burnUIPFH), _burnIndicatorPFH];
|
_unit setVariable [QGVAR(burnUIPFH), _burnIndicatorPFH];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -296,7 +296,7 @@ if (_isBurning) exitWith {};
|
|||||||
|
|
||||||
if (local _unit) then {
|
if (local _unit) then {
|
||||||
if (_unit isEqualTo ace_player) then {
|
if (_unit isEqualTo ace_player) then {
|
||||||
private _burnIndicatorPFH = [FUNC(burnIndicator), 1, _unit] call CBA_fnc_addPerFrameHandler;
|
private _burnIndicatorPFH = [LINKFUNC(burnIndicator), 1, _unit] call CBA_fnc_addPerFrameHandler;
|
||||||
_unit setVariable [QGVAR(burnUIPFH), _burnIndicatorPFH];
|
_unit setVariable [QGVAR(burnUIPFH), _burnIndicatorPFH];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ private _perframeCheck = {
|
|||||||
_args params ["_unit", "_side", "_typeOf", "_posASL", "_vectorDir", "_vectorUp", "_cost"];
|
_args params ["_unit", "_side", "_typeOf", "_posASL", "_vectorDir", "_vectorUp", "_cost"];
|
||||||
|
|
||||||
// Animation loop (required for longer constructions)
|
// Animation loop (required for longer constructions)
|
||||||
if (animationState _unit isNotEqualTo "AinvPknlMstpSnonWnonDnon_medic4") then {
|
if (_totalTime != 0 && {animationState _unit != "AinvPknlMstpSnonWnonDnon_medic4"}) then {
|
||||||
// Perform animation
|
// Perform animation
|
||||||
[_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation);
|
[_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation);
|
||||||
};
|
};
|
||||||
@ -55,4 +55,3 @@ private _perframeCheck = {
|
|||||||
LLSTRING(progressBarTitle),
|
LLSTRING(progressBarTitle),
|
||||||
_perframeCheck
|
_perframeCheck
|
||||||
] call EFUNC(common,progressBar);
|
] call EFUNC(common,progressBar);
|
||||||
|
|
||||||
|
@ -70,6 +70,7 @@ private _mouseClickID = [_player, "DefaultAction", {GVAR(isPlacing) == PLACE_WAI
|
|||||||
[_unit, _object] call FUNC(deployConfirm);
|
[_unit, _object] call FUNC(deployConfirm);
|
||||||
} else {
|
} else {
|
||||||
TRACE_1("deleting object",_object);
|
TRACE_1("deleting object",_object);
|
||||||
|
[QGVAR(onDeployStop), [_unit, _object, _cost]] call CBA_fnc_localEvent;
|
||||||
deleteVehicle _object;
|
deleteVehicle _object;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
GVAR(lastFragTime) = -1;
|
GVAR(lastFragTime) = -1;
|
||||||
[QGVAR(frag_eh), {_this call FUNC(frago);}] call CBA_fnc_addEventHandler;
|
[QGVAR(frag_eh), LINKFUNC(frago)] call CBA_fnc_addEventHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
["CBA_settingsInitialized", {
|
["CBA_settingsInitialized", {
|
||||||
|
@ -22,5 +22,5 @@ if (_depth <= 2) then {
|
|||||||
private _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange");
|
private _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange");
|
||||||
private _indirectHit = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHit");
|
private _indirectHit = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHit");
|
||||||
private _testParams = [_pos, [_indirectHitRange, _indirectHit], [], [], -4, _depth, 0];
|
private _testParams = [_pos, [_indirectHitRange, _indirectHit], [], [], -4, _depth, 0];
|
||||||
[DFUNC(findReflections), 0, _testParams] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(findReflections), 0, _testParams] call CBA_fnc_addPerFrameHandler;
|
||||||
};
|
};
|
||||||
|
@ -136,7 +136,7 @@
|
|||||||
<Portuguese>Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo)</Portuguese>
|
<Portuguese>Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo)</Portuguese>
|
||||||
<French>Ce paramètre contrôle le nombre maximum de projectiles et d'éclats résultant de la fragmentation, que le système peut suivre à chaque instant.\nSi plus de projectiles sont générés, ils ne seront pas pris en compte. Baissez ce réglage si vous ne voulez pas de chute de FPS en cas de nombre important de projectiles (>200 éclats en même temps).</French>
|
<French>Ce paramètre contrôle le nombre maximum de projectiles et d'éclats résultant de la fragmentation, que le système peut suivre à chaque instant.\nSi plus de projectiles sont générés, ils ne seront pas pris en compte. Baissez ce réglage si vous ne voulez pas de chute de FPS en cas de nombre important de projectiles (>200 éclats en même temps).</French>
|
||||||
<Hungarian>Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre)</Hungarian>
|
<Hungarian>Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre)</Hungarian>
|
||||||
<Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов)</Russian>
|
<Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. /nСнаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов)</Russian>
|
||||||
<Italian>Questo parametro controlla il numero massimo di proiettili che la frammentazione e il sistema di spalling tracciano in ogni momento. Se vengono sparati ulteriori proiettili, non verranno tracciati. Abbassa questo parametro se non vuoi cali di FPS in scenari con molti proiettili (>200 proiettili in aria contemporaneamente)</Italian>
|
<Italian>Questo parametro controlla il numero massimo di proiettili che la frammentazione e il sistema di spalling tracciano in ogni momento. Se vengono sparati ulteriori proiettili, non verranno tracciati. Abbassa questo parametro se non vuoi cali di FPS in scenari con molti proiettili (>200 proiettili in aria contemporaneamente)</Italian>
|
||||||
<Japanese>この設定では、断片化および剥離システムが常に追跡する飛翔体の最大量を制御します。 さらに多くの飛翔体が発射された場合、それらは追跡されません。 弾数が多いシナリオでFPSを低下させたくない場合は、この設定を下げてください。 (一度に200発以上が空中に発射されます)</Japanese>
|
<Japanese>この設定では、断片化および剥離システムが常に追跡する飛翔体の最大量を制御します。 さらに多くの飛翔体が発射された場合、それらは追跡されません。 弾数が多いシナリオでFPSを低下させたくない場合は、この設定を下げてください。 (一度に200発以上が空中に発射されます)</Japanese>
|
||||||
<Korean>이 설정은 탄환파편 및 파편 시스템으로 인해 생긴 발사체의 수를 결정합니다. 만약 더 많은 발사체가 나올 경우 정해진 수 이외에는 추적하지 않습니다. 이 설정을 낮춤으로써 파편이 많은 시나리오를 실행할때 더욱 원활히 진행할 수 있습니다 (한 번에 200개 이하)</Korean>
|
<Korean>이 설정은 탄환파편 및 파편 시스템으로 인해 생긴 발사체의 수를 결정합니다. 만약 더 많은 발사체가 나올 경우 정해진 수 이외에는 추적하지 않습니다. 이 설정을 낮춤으로써 파편이 많은 시나리오를 실행할때 더욱 원활히 진행할 수 있습니다 (한 번에 200개 이하)</Korean>
|
||||||
|
@ -88,10 +88,10 @@ if (!hasInterface) exitWith {};
|
|||||||
if (GVAR(effects) in [2, 3]) then {
|
if (GVAR(effects) in [2, 3]) then {
|
||||||
|
|
||||||
// Register fire event handler
|
// Register fire event handler
|
||||||
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
["ace_firedPlayer", LINKFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
//Add Explosion XEH
|
//Add Explosion XEH
|
||||||
["CAManBase", "explosion", FUNC(handleExplosion)] call CBA_fnc_addClassEventHandler;
|
["CAManBase", "explosion", LINKFUNC(handleExplosion)] call CBA_fnc_addClassEventHandler;
|
||||||
|
|
||||||
GVAR(PostProcessEyes) = ppEffectCreate ["ColorCorrections", 1992];
|
GVAR(PostProcessEyes) = ppEffectCreate ["ColorCorrections", 1992];
|
||||||
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [1, 1, 1, 0]];
|
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [1, 1, 1, 0]];
|
||||||
|
@ -22,7 +22,7 @@ if (!alive _unit) exitWith {};
|
|||||||
private _fnc_underCover = {
|
private _fnc_underCover = {
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
if (vehicle _unit != _unit && {!isTurnedOut _unit}) exitWith {true};
|
if (!isNull objectParent _unit && {!isTurnedOut _unit}) exitWith {true};
|
||||||
|
|
||||||
// looking up and no roof over head
|
// looking up and no roof over head
|
||||||
private _position = eyePos _unit;
|
private _position = eyePos _unit;
|
||||||
|
@ -23,7 +23,7 @@ if (!alive _unit) exitWith {};
|
|||||||
GVAR(FrameEvent) set [0, !(GVAR(FrameEvent) select 0)];
|
GVAR(FrameEvent) set [0, !(GVAR(FrameEvent) select 0)];
|
||||||
|
|
||||||
if (GVAR(FrameEvent) select 0) exitWith {
|
if (GVAR(FrameEvent) select 0) exitWith {
|
||||||
if (vehicle _unit != _unit && {!isTurnedOut _unit}) exitWith {
|
if (!isNull objectParent _unit && {!isTurnedOut _unit}) exitWith {
|
||||||
(GVAR(FrameEvent) select 1) set [0, false];
|
(GVAR(FrameEvent) select 1) set [0, false];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Goggles_effects_effectsOnly">
|
<Key ID="STR_ACE_Goggles_effects_effectsOnly">
|
||||||
<English>Effects</English>
|
<English>Effects</English>
|
||||||
<Russian>эффекты</Russian>
|
<Russian>Эффекты</Russian>
|
||||||
<Japanese>エフェクト</Japanese>
|
<Japanese>エフェクト</Japanese>
|
||||||
<Polish>Efekty</Polish>
|
<Polish>Efekty</Polish>
|
||||||
<German>Effekte</German>
|
<German>Effekte</German>
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
["ace_flashbangExploded", {_this call FUNC(flashbangExplosionEH)}] call CBA_fnc_addEventHandler;
|
["ace_flashbangExploded", LINKFUNC(flashbangExplosionEH)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Register fired event handlers
|
// Register fired event handlers
|
||||||
["ace_firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler;
|
["ace_firedPlayer", LINKFUNC(throwGrenade)] call CBA_fnc_addEventHandler;
|
||||||
["ace_firedPlayerNonLocal", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler;
|
["ace_firedPlayerNonLocal", LINKFUNC(throwGrenade)] call CBA_fnc_addEventHandler;
|
||||||
["ace_firedNonPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler;
|
["ace_firedNonPlayer", LINKFUNC(throwGrenade)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
@ -145,11 +145,11 @@ if (hasInterface && {!isNull ACE_player} && {alive ACE_player}) then {
|
|||||||
|
|
||||||
//PARTIALRECOVERY - start decreasing effect over time
|
//PARTIALRECOVERY - start decreasing effect over time
|
||||||
[{
|
[{
|
||||||
params ["_strength"];
|
params ["_strength", "_blend"];
|
||||||
|
|
||||||
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
|
GVAR(flashbangPPEffectCC) ppEffectAdjust [1, 1, 0, _blend, [0,0,0,1], [0,0,0,0]];
|
||||||
GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength);
|
GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength);
|
||||||
}, [_strength], 7 * _strength] call CBA_fnc_waitAndExecute;
|
}, [_strength, _blend], 7 * _strength] call CBA_fnc_waitAndExecute;
|
||||||
|
|
||||||
//FULLRECOVERY - end effect
|
//FULLRECOVERY - end effect
|
||||||
[{
|
[{
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
// Request rebalance on any unit spawn (only if distribution enabled)
|
// Request rebalance on any unit spawn (only if distribution enabled)
|
||||||
if (XGVAR(enabled)) then {
|
if (XGVAR(enabled)) then {
|
||||||
["AllVehicles", "initPost", FUNC(handleSpawn), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
["AllVehicles", "initPost", LINKFUNC(handleSpawn), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||||
};
|
};
|
||||||
// Add disconnect EH
|
// Add disconnect EH
|
||||||
addMissionEventHandler ["HandleDisconnect", {call FUNC(handleDisconnect)}];
|
addMissionEventHandler ["HandleDisconnect", {call FUNC(handleDisconnect)}];
|
||||||
|
@ -13,7 +13,7 @@ if (isServer) then {
|
|||||||
GVAR(inRebalance) = false;
|
GVAR(inRebalance) = false;
|
||||||
GVAR(endMissionCheckDelayed) = false;
|
GVAR(endMissionCheckDelayed) = false;
|
||||||
GVAR(blacklistType) = [BLACKLIST_UAV];
|
GVAR(blacklistType) = [BLACKLIST_UAV];
|
||||||
[QXGVAR(headlessClientJoined), FUNC(handleConnectHC)] call CBA_fnc_addEventHandler;
|
[QXGVAR(headlessClientJoined), LINKFUNC(handleConnectHC)] call CBA_fnc_addEventHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user