mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge remote-tracking branch 'upstream/master' into patch-3
This commit is contained in:
commit
460b5fa453
1
.github/release-drafter.yml
vendored
1
.github/release-drafter.yml
vendored
@ -27,6 +27,7 @@ categories:
|
||||
|
||||
exclude-labels:
|
||||
- 'ignore changelog'
|
||||
- 'dependencies'
|
||||
|
||||
change-template: '- $TITLE (#$NUMBER)'
|
||||
template: |
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,6 +4,7 @@ release/*
|
||||
releases/*
|
||||
extensions/vcproj32/*
|
||||
extensions/vcproj64/*
|
||||
.vscode/*
|
||||
hemtt
|
||||
hemtt.exe
|
||||
tools/temp
|
||||
|
@ -56,6 +56,7 @@ Bla1337
|
||||
BlackPixxel <blackpixxel96@gmail.com>
|
||||
BlackQwar
|
||||
Brakoviejo
|
||||
Brett Mayson
|
||||
Brisse <brisse@outlook.com>
|
||||
Brostrom.A | Evul <andreas.brostrom.ce@gmail.com>
|
||||
BullHorn <bullhorn7@gmail.com>
|
||||
@ -106,6 +107,7 @@ Hawkins
|
||||
Head <brobergsebastian@gmail.com>
|
||||
Hybrid V
|
||||
john681611 <john681611@hotmail.com>
|
||||
JoramD
|
||||
Karneck <dschultz26@hotmail.com>
|
||||
Kavinsky <nmunozfernandez@gmail.com>
|
||||
Keithen <Keithen.Neu@gmail.com>
|
||||
@ -171,3 +173,4 @@ zGuba
|
||||
Fyuran <dankemedic@hotmail.com>
|
||||
dabako <dabako@dabakoworld.de>
|
||||
Frank <frankplow@protonmail.com>
|
||||
10Dozen a.k.a Dusin
|
||||
|
@ -64,7 +64,7 @@ class CfgAmmo {
|
||||
class ACE_Gatling_30mm_Sub_HEI: SubmunitionBullet {
|
||||
submunitionAmmo = "Gatling_30mm_HE_Plane_CAS_01_F";
|
||||
weaponType = "cannon";
|
||||
submunitionConeType[] = {"poissondisccenter", 3};
|
||||
submunitionConeType[] = {"randomcenter", 3};
|
||||
submunitionConeAngle = 0.056; // in degrees, 0.055 ~= 0.001 mils minute, but present
|
||||
model = "\A3\Weapons_f\Data\bullettracer\tracer_red.p3d";
|
||||
triggerTime = 0.005;
|
||||
|
@ -8,7 +8,7 @@ class CfgPatches {
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"alganthe", "mharis001", "SynixeBrett"};
|
||||
authors[] = {"alganthe", "mharis001", "Brett Mayson"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Add a custom sorting method.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -37,6 +37,7 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
|
||||
_contentPanelCtrl lnbSetCurSelRow (_contentPanelCursSel);
|
||||
|
||||
[(findDisplay IDD_ace_arsenal), [localize LSTRING(loadoutDeleted), _loadoutName] joinString " "] call FUNC(message);
|
||||
[QGVAR(onLoadoutDelete), [_loadoutName]] call CBA_fnc_localEvent;
|
||||
} else {
|
||||
|
||||
private _profileName = profileName; // GVAR(center) could be a remote unit
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Create the internal stats arrays when needed for the first time
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\defines.hpp"
|
||||
/*
|
||||
* Author: Alganthe, SynixeBrett
|
||||
* Author: Alganthe, Brett Mayson
|
||||
* Fill right panel.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\defines.hpp"
|
||||
/*
|
||||
* Author: Alganthe, Dedmen, SynixeBrett
|
||||
* Author: Alganthe, Dedmen, Brett Mayson
|
||||
* Sort arsenal panel.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Alganthe, SynixeBrett
|
||||
* Author: Alganthe, Brett Mayson
|
||||
* Statement to sort weapons by their accuracy.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Statement to sort items by the amount in inventory.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Statement to sort magazines by their ammo count.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Alganthe, SynixeBrett
|
||||
* Author: Alganthe, Brett Mayson
|
||||
* Statement to sort items by their mass.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Statement to sort items by the mod they belong to.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Alganthe, SynixeBrett
|
||||
* Author: Alganthe, Brett Mayson
|
||||
* Statement to sort weapons by their rate of fire.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Alganthe, SynixeBrett
|
||||
* Author: Alganthe, Brett Mayson
|
||||
* Statement to sort optics by their magnification.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -389,6 +389,7 @@
|
||||
<French>Trier par capacité de chargement</French>
|
||||
<Japanese>容量で並び替え</Japanese>
|
||||
<Spanish>Ordenar por capacidad</Spanish>
|
||||
<Russian>Сортировка по вместимости</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByAccuracyText">
|
||||
<English>Sort by accuracy</English>
|
||||
@ -397,6 +398,7 @@
|
||||
<Japanese>精度で並び替え</Japanese>
|
||||
<Turkish>Isabet doğruluğuna göre sırala</Turkish>
|
||||
<Spanish>Ordenar por precisión</Spanish>
|
||||
<Russian>Сортировка по точности</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByRateOfFireText">
|
||||
<English>Sort by rate of fire</English>
|
||||
@ -405,6 +407,7 @@
|
||||
<Japanese>連射速度で並び替え</Japanese>
|
||||
<Turkish>Atış hızına göre sırala</Turkish>
|
||||
<Spanish>Ordenar por cadencia de tiro</Spanish>
|
||||
<Russian>Сортировка по темпу стрельбы</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByMagnificationText">
|
||||
<English>Sort by magnification</English>
|
||||
@ -412,6 +415,7 @@
|
||||
<French>Trier par grossissement</French>
|
||||
<Japanese>倍率で並び替え</Japanese>
|
||||
<Spanish>Ordenar por magnificación</Spanish>
|
||||
<Russian>Сортировка по кратности приближения</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByMagCountText">
|
||||
<English>Sort by ammo count</English>
|
||||
@ -420,18 +424,21 @@
|
||||
<Japanese>装弾数で並び替え</Japanese>
|
||||
<Turkish>Mermi sayısına göre sırala</Turkish>
|
||||
<Spanish>Ordenar por cantidad de munición</Spanish>
|
||||
<Russian>Сортировка по количеству боеприпасов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByProtectionBallistic">
|
||||
<English>Sort by ballistic protection</English>
|
||||
<French>Trier par protection balistique</French>
|
||||
<Japanese>防弾性能で並び替え</Japanese>
|
||||
<Spanish>Ordenar por protección balística</Spanish>
|
||||
<Russian>Сортировка по баллистической защите</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByProtectionExplosive">
|
||||
<English>Sort by explosive protection</English>
|
||||
<French>Trier par résistance aux explosifs</French>
|
||||
<Japanese>防爆性能で並び替え</Japanese>
|
||||
<Spanish>Ordenar por protección de explosivos</Spanish>
|
||||
<Russian>Сортировка по защите от взрывов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonShareTooltip">
|
||||
<English>Share or stop sharing the selected loadout</English>
|
||||
|
@ -86,6 +86,10 @@ class CfgVehicles {
|
||||
dayLight = 0;
|
||||
onlyInNvg = 1;
|
||||
useFlare = 0;
|
||||
maxLifetime = "8 * 60 * 60";
|
||||
blinkingPattern[] = {0.1, 1.1}; // 0.1 s on, 1.1 s off
|
||||
blinkingStartsOn = 1;
|
||||
blinkingPatternGuarantee = 1;
|
||||
};
|
||||
|
||||
side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature
|
||||
|
@ -171,30 +171,30 @@
|
||||
<Russian>#4 Картечь</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_12Gauge_Pellets_No4_Bird_NameShort">
|
||||
<English>#7 Birdshot</English>
|
||||
<Spanish>Perdigones #7</Spanish>
|
||||
<German>#7 Vogelschrot</German>
|
||||
<Chinese>#7 鹿彈</Chinese>
|
||||
<Italian>#7 Birdshot</Italian>
|
||||
<Japanese>#7 バックショット</Japanese>
|
||||
<English>#4 Birdshot</English>
|
||||
<Spanish>Perdigones #4</Spanish>
|
||||
<German>#4 Vogelschrot</German>
|
||||
<Chinese>#4 鹿彈</Chinese>
|
||||
<Italian>#4 Birdshot</Italian>
|
||||
<Japanese>#4 バックショット</Japanese>
|
||||
<French>Grenaille No.4</French>
|
||||
<Czech>#7 Broky malé</Czech>
|
||||
<Polish>#7 Śrut Drobny</Polish>
|
||||
<Turkish>#7 Küçük saçma</Turkish>
|
||||
<Russian>#7 Дробь</Russian>
|
||||
<Czech>#4 Broky malé</Czech>
|
||||
<Polish>#4 Śrut Drobny</Polish>
|
||||
<Turkish>#4 Küçük saçma</Turkish>
|
||||
<Russian>#4 Дробь</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_12Gauge_Pellets_No4_Bird_Description">
|
||||
<English>#7 Birdshot</English>
|
||||
<Spanish>Perdigones #7</Spanish>
|
||||
<German>#7 Vogelschrot</German>
|
||||
<Chinese>#7 鹿彈</Chinese>
|
||||
<Italian>#7 Birdshot</Italian>
|
||||
<Japanese>#7 バックショット</Japanese>
|
||||
<English>#4 Birdshot</English>
|
||||
<Spanish>Perdigones #4</Spanish>
|
||||
<German>#4 Vogelschrot</German>
|
||||
<Chinese>#4 鹿彈</Chinese>
|
||||
<Italian>#4 Birdshot</Italian>
|
||||
<Japanese>#4 バックショット</Japanese>
|
||||
<French>Grenaille No.4</French>
|
||||
<Czech>#7 Broky malé - kalibr 2.54 mm</Czech>
|
||||
<Polish>#7 Śrut Drobny (Birdshot)</Polish>
|
||||
<Turkish>#7 Küçük saçma</Turkish>
|
||||
<Russian>#7 Дробь</Russian>
|
||||
<Czech>#4 Broky malé - kalibr 3.3 mm</Czech>
|
||||
<Polish>#4 Śrut Drobny (Birdshot)</Polish>
|
||||
<Turkish>#4 Küçük saçma</Turkish>
|
||||
<Russian>#4 Дробь</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_2Rnd_12Gauge_Pellets_No00_Buck_Name">
|
||||
<English>12 Gauge 2Rnd #00 Buckshot</English>
|
||||
@ -281,18 +281,18 @@
|
||||
<Turkish>12 kalibre 2 mermi #4 İrisaçma</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_2Rnd_12Gauge_Pellets_No4_Bird_Name">
|
||||
<English>12 Gauge 2Rnd #7 Birdshot</English>
|
||||
<Spanish>2 Cartuchos de Perdigones Calibre 12 #7</Spanish>
|
||||
<German>12 Gauge 2Schuss #7 Schrotmunition</German>
|
||||
<Chinese>12鉛徑 2發 #7 鹿彈</Chinese>
|
||||
<Italian>12 Gauge 2Rnd #7 Birdshot</Italian>
|
||||
<Japanese>12 ゲージ 2 発入り #7 バックショット</Japanese>
|
||||
<English>12 Gauge 2Rnd #4 Birdshot</English>
|
||||
<Spanish>2 Cartuchos de Perdigones Calibre 12 #4</Spanish>
|
||||
<German>12 Gauge 2Schuss #4 Schrotmunition</German>
|
||||
<Chinese>12鉛徑 2發 #4 鹿彈</Chinese>
|
||||
<Italian>12 Gauge 2Rnd #4 Birdshot</Italian>
|
||||
<Japanese>12 ゲージ 2 発入り #4 バックショット</Japanese>
|
||||
<French>2 balles cal. 12 Grenaille No.4</French>
|
||||
<Czech>2x #7 Broky malé (kalibr 2.54 mm)</Czech>
|
||||
<Polish>12 Gauge 2 naboje #7 Śrut</Polish>
|
||||
<Portuguese>Chumbo #7 Calibre Doze 2 Tiros</Portuguese>
|
||||
<Russian>12 Калибр 2 патр. #7 Дробь</Russian>
|
||||
<Turkish>12 kalibre 2 mermi #5 İrisaçma</Turkish>
|
||||
<Czech>2x #4 Broky malé (kalibr 3.3 mm)</Czech>
|
||||
<Polish>12 Gauge 2 naboje #4 Śrut</Polish>
|
||||
<Portuguese>Chumbo #4 Calibre Doze 2 Tiros</Portuguese>
|
||||
<Russian>12 Калибр 2 патр. #4 Дробь</Russian>
|
||||
<Turkish>12 kalibre 2 mermi #4 İrisaçma</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_6Rnd_12Gauge_Pellets_No00_Buck_Name">
|
||||
<English>12 Gauge 6Rnd #00 Buckshot</English>
|
||||
@ -379,17 +379,17 @@
|
||||
<Turkish>12 kalibre 6 mermi #4 İrisaçma</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_6Rnd_12Gauge_Pellets_No4_Bird_Name">
|
||||
<English>12 Gauge 6Rnd #7 Birdshot</English>
|
||||
<Spanish>6 Cartuchos de Perdigones Calibre 12 #7</Spanish>
|
||||
<German>12 Gauge 6Schuss #7 Schrotmunition</German>
|
||||
<Chinese>12鉛徑 6發 #7 鹿彈</Chinese>
|
||||
<Italian>12 Gauge 6Rnd #7 Birdshot</Italian>
|
||||
<Japanese>12 ゲージ 6 発入り #7 バックショット</Japanese>
|
||||
<English>12 Gauge 6Rnd #4 Birdshot</English>
|
||||
<Spanish>6 Cartuchos de Perdigones Calibre 12 #4</Spanish>
|
||||
<German>12 Gauge 6Schuss #4 Schrotmunition</German>
|
||||
<Chinese>12鉛徑 6發 #4 鹿彈</Chinese>
|
||||
<Italian>12 Gauge 6Rnd #4 Birdshot</Italian>
|
||||
<Japanese>12 ゲージ 6 発入り #4 バックショット</Japanese>
|
||||
<French>6 balles cal. 12 Grenaille No.4</French>
|
||||
<Czech>6x #7 Broky malé (kalibr 2.54 mm)</Czech>
|
||||
<Polish>12 Gauge 6 naboi #7 Śrut</Polish>
|
||||
<Russian>12 Калибр 6 патр. #7 Дробь</Russian>
|
||||
<Turkish>12 kalibre 6 mermi #7 İrisaçma</Turkish>
|
||||
<Czech>6x #4 Broky malé (kalibr 3.3 mm)</Czech>
|
||||
<Polish>12 Gauge 6 naboi #4 Śrut</Polish>
|
||||
<Russian>12 Калибр 6 патр. #4 Дробь</Russian>
|
||||
<Turkish>12 kalibre 6 mermi #4 İrisaçma</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_15Rnd_12Gauge_Pellets_No00_Buck_Name">
|
||||
<English>12 Gauge 15Rnd #00 Buckshot</English>
|
||||
|
10
addons/common/CfgWrapperUI.hpp
Normal file
10
addons/common/CfgWrapperUI.hpp
Normal file
@ -0,0 +1,10 @@
|
||||
class CfgWrapperUI {
|
||||
class Cursors {
|
||||
class Arrow;
|
||||
class GVAR(blank): Arrow {
|
||||
// This texture has a single 99% transparent pixel and is otherwise blank
|
||||
// The single pixel is necessary, otherwise appears as a black 32 px square
|
||||
texture = QPATHTOF(data\blank_cursor_ca.paa);
|
||||
};
|
||||
};
|
||||
};
|
18
addons/common/DisableMouseDialog.hpp
Normal file
18
addons/common/DisableMouseDialog.hpp
Normal file
@ -0,0 +1,18 @@
|
||||
class ctrlMapEmpty;
|
||||
class GVAR(DisableMouse_Dialog) {
|
||||
idd = -1;
|
||||
movingEnable = 0;
|
||||
onLoad = QUOTE(with uiNameSpace do { GVAR(dlgDisableMouse) = _this # 0; };);
|
||||
objects[] = {};
|
||||
class controlsBackground {
|
||||
// Transparent map allows setting custom cursor
|
||||
class Background: ctrlMapEmpty {
|
||||
idc = 101;
|
||||
fade = 1;
|
||||
x = "safezoneXAbs";
|
||||
y = "safezoneY";
|
||||
w = "safezoneWAbs";
|
||||
h = "safezoneH";
|
||||
};
|
||||
};
|
||||
};
|
@ -49,29 +49,3 @@ class GVAR(ProgressBar_Dialog) {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class GVAR(DisableMouse_Dialog) {
|
||||
idd = -1;
|
||||
movingEnable = 0;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),_this select 0)];);
|
||||
objects[] = {};
|
||||
class controlsBackground {
|
||||
class Background {
|
||||
idc = -1;
|
||||
moving = 0;
|
||||
font = "TahomaB";
|
||||
text = "";
|
||||
sizeEx = 0;
|
||||
lineSpacing = 0;
|
||||
type = 0;
|
||||
style = 0;
|
||||
size = 1;
|
||||
colorBackground[] = {0, 0, 0, 0};//0.5
|
||||
colorText[] = {0, 0, 0, 0};
|
||||
x = "safezoneX";
|
||||
y = "safezoneY";
|
||||
w = "safezoneW";
|
||||
h = "safezoneH";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -420,13 +420,18 @@ GVAR(reloadMutex_lastMagazines) = [];
|
||||
private _gesture = getText (_wpnMzlConfig >> "reloadAction");
|
||||
if (_gesture == "") exitWith {}; //Ignore weapons with no reload gesture (binoculars)
|
||||
private _isLauncher = _weapon isKindOf ["Launcher", configFile >> "CfgWeapons"];
|
||||
private _animConfig = ["CfgGesturesMale", "CfgMovesMaleSdr"] select _isLauncher;
|
||||
private _duration = getNumber (configfile >> _animConfig >> "States" >> _gesture >> "speed");
|
||||
private _duration = 0;
|
||||
if (_isLauncher) then {
|
||||
_duration = getNumber (configfile >> "CfgMovesMaleSdr" >> "States" >> _gesture >> "speed");
|
||||
};
|
||||
if (_duration == 0) then {
|
||||
_duration = getNumber (configfile >> "CfgGesturesMale" >> "States" >> _gesture >> "speed");
|
||||
};
|
||||
|
||||
if (_duration != 0) then {
|
||||
_duration = if (_duration < 0) then { abs _duration } else { 1 / _duration };
|
||||
} else {
|
||||
_duration = 3;
|
||||
_duration = 6;
|
||||
};
|
||||
|
||||
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
|
||||
|
@ -9,7 +9,7 @@ PREP_RECOMPILE_END;
|
||||
|
||||
GVAR(syncedEvents) = [] call CBA_fnc_hashCreate;
|
||||
GVAR(showHudHash) = [] call CBA_fnc_hashCreate;
|
||||
GVAR(vehicleIconCache) = call CBA_fnc_createNamespace; // for getVehicleIcon
|
||||
GVAR(vehicleIconCache) = createHashMap; // for getVehicleIcon
|
||||
|
||||
GVAR(settingsInitFinished) = false;
|
||||
GVAR(runAtSettingsInitialized) = [];
|
||||
|
@ -14,18 +14,17 @@ class CfgPatches {
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#include "CfgLocationTypes.hpp"
|
||||
#include "CfgSounds.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgMagazines.hpp"
|
||||
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgVoice.hpp"
|
||||
#include "CfgUnitInsignia.hpp"
|
||||
#include "CfgEden.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgLocationTypes.hpp"
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgSounds.hpp"
|
||||
#include "CfgUnitInsignia.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgVoice.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgWrapperUI.hpp"
|
||||
|
||||
class ACE_Rsc_Display_Base {
|
||||
idd = -1;
|
||||
@ -62,6 +61,7 @@ class ACE_Rsc_Control_Base {
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "define.hpp"
|
||||
#include "ProgressScreen.hpp"
|
||||
#include "DisableMouseDialog.hpp"
|
||||
#include "HintConfig.hpp"
|
||||
#include "RscInfoType.hpp"
|
||||
#include "CompassControl.hpp"
|
||||
|
BIN
addons/common/data/blank_cursor_ca.paa
Normal file
BIN
addons/common/data/blank_cursor_ca.paa
Normal file
Binary file not shown.
@ -24,6 +24,7 @@ params ["_unit", "_classname", ["_container", ""], ["_ammoCount", -1]];
|
||||
private _type = _classname call FUNC(getItemType);
|
||||
|
||||
private _canAdd = false;
|
||||
private _canFitWeaponSlot = false;
|
||||
private _addedToUnit = false;
|
||||
|
||||
switch (_container) do {
|
||||
@ -38,12 +39,28 @@ switch (_container) do {
|
||||
};
|
||||
default {
|
||||
_canAdd = [_unit, _classname] call CBA_fnc_canAddItem;
|
||||
if (_canAdd) then {
|
||||
switch (_type select 1) do {
|
||||
case "primary": {
|
||||
_canFitWeaponSlot = primaryWeapon _unit == "";
|
||||
};
|
||||
case "secondary": {
|
||||
_canFitWeaponSlot = secondaryWeapon _unit == "";
|
||||
};
|
||||
case "handgun": {
|
||||
_canFitWeaponSlot = handgunWeapon _unit == "";
|
||||
};
|
||||
case "binocular": {
|
||||
_canFitWeaponSlot = binocular _unit == "";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
switch (_type select 0) do {
|
||||
case "weapon": {
|
||||
if (_canAdd) then {
|
||||
if (_canAdd || {_canFitWeaponSlot}) then {
|
||||
_addedToUnit = true;
|
||||
|
||||
switch (_container) do {
|
||||
@ -57,7 +74,21 @@ switch (_type select 0) do {
|
||||
(uniformContainer _unit) addWeaponCargoGlobal [_classname, 1];
|
||||
};
|
||||
default {
|
||||
if (_canFitWeaponSlot) then {
|
||||
_unit addWeaponGlobal _classname;
|
||||
} else {
|
||||
{
|
||||
_x params ["_parameters", "_container"];
|
||||
|
||||
if (_parameters call CBA_fnc_canAddItem) exitWith {
|
||||
_container addWeaponCargoGlobal [_classname, 1]; // addWeaponGlobal will replace the weapon currently in a slot
|
||||
};
|
||||
} forEach [
|
||||
[[_unit, _classname, 1, false, false, true], backpackContainer _unit],
|
||||
[[_unit, _classname, 1, false, true, false], vestContainer _unit],
|
||||
[[_unit, _classname, 1, true, false, false], uniformContainer _unit]
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
} else {
|
||||
|
@ -41,6 +41,10 @@ if (_state) then {
|
||||
|
||||
private _display = uiNamespace getVariable QGVAR(dlgDisableMouse);
|
||||
|
||||
// Hide cursor by using custom transparent cursor
|
||||
private _map = _display displayCtrl 101;
|
||||
_map ctrlMapCursor ["", QGVAR(blank)];
|
||||
|
||||
_display displayAddEventHandler ["KeyDown", {
|
||||
params ["", "_key"];
|
||||
|
||||
|
@ -25,7 +25,7 @@ private _objectType = if (_object isEqualType objNull) then {
|
||||
} else {
|
||||
_object
|
||||
};
|
||||
private _cachedValue = GVAR(vehicleIconCache) getVariable _objectType;
|
||||
private _cachedValue = GVAR(vehicleIconCache) get _objectType;
|
||||
|
||||
if (isNil "_cachedValue") then {
|
||||
private _vehicleValue = getText (configfile >> "CfgVehicles" >> _objectType >> "icon");
|
||||
@ -41,7 +41,7 @@ if (isNil "_cachedValue") then {
|
||||
_cachedValue = _vehicleIconValue;
|
||||
};
|
||||
|
||||
GVAR(vehicleIconCache) setVariable [_objectType, _cachedValue];
|
||||
GVAR(vehicleIconCache) set [_objectType, _cachedValue];
|
||||
};
|
||||
|
||||
_cachedValue
|
||||
|
@ -47,17 +47,22 @@ unassignVehicle _unit;
|
||||
[_unit] orderGetIn false;
|
||||
|
||||
TRACE_1("Ejecting", alive _unit);
|
||||
_unit action ["Eject", vehicle _unit];
|
||||
|
||||
// Failsafe - sometimes eject alone doesn't work, but moveOut does
|
||||
[{
|
||||
private _vehicle = vehicle _unit;
|
||||
if (local _vehicle) then {
|
||||
_unit action ["Eject", _vehicle];
|
||||
// Failsafe - sometimes eject alone doesn't work, but moveOut does
|
||||
[{
|
||||
params ["_unit"];
|
||||
|
||||
if (vehicle _unit != _unit) then {
|
||||
WARNING_1("UnloadPersonLocal [%1] did not eject normally",_unit);
|
||||
moveOut _unit;
|
||||
};
|
||||
}, [_unit], 1] call CBA_fnc_waitAndExecute;
|
||||
}, [_unit], 1] call CBA_fnc_waitAndExecute;
|
||||
|
||||
} else {
|
||||
moveOut _unit;
|
||||
};
|
||||
|
||||
[{
|
||||
params ["_unit", "_emptyPos"];
|
||||
|
@ -12,7 +12,7 @@
|
||||
QGVAR(allowFadeMusic),
|
||||
"CHECKBOX",
|
||||
[LSTRING(AllowFadeMusic), LSTRING(AllowFadeMusicTooltip)],
|
||||
localize LSTRING(ACEKeybindCategoryCommon),
|
||||
format ["ACE %1", localize LSTRING(DisplayName)],
|
||||
true,
|
||||
true
|
||||
] call CBA_fnc_addSetting;
|
||||
|
@ -10,7 +10,7 @@
|
||||
<Chinesesimp>通用</Chinesesimp>
|
||||
<Korean>일반</Korean>
|
||||
<Polish>Ogólny</Polish>
|
||||
<Russian>Общий</Russian>
|
||||
<Russian>Общие</Russian>
|
||||
<Portuguese>Comum</Portuguese>
|
||||
<Spanish>Común</Spanish>
|
||||
<Czech>Obecné</Czech>
|
||||
|
@ -357,9 +357,10 @@ class DAGR_Menu {
|
||||
sizeEx = 0.04;
|
||||
};
|
||||
|
||||
//Waypoint adding and modification digits underline
|
||||
class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic {
|
||||
idc = 2668788;
|
||||
x = 0.451;
|
||||
x = 0.465;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -367,7 +368,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic {
|
||||
idc = 2668789;
|
||||
x = 0.465;
|
||||
x = 0.475;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -375,7 +376,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic {
|
||||
idc = 2668790;
|
||||
x = 0.479;
|
||||
x = 0.485;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -383,7 +384,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic {
|
||||
idc = 2668791;
|
||||
x = 0.493;
|
||||
x = 0.495;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -391,7 +392,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic {
|
||||
idc = 2668792;
|
||||
x = 0.507;
|
||||
x = 0.505;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -399,7 +400,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic {
|
||||
idc = 2668793;
|
||||
x = 0.521;
|
||||
x = 0.515;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -407,7 +408,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic {
|
||||
idc = 2668794;
|
||||
x = 0.535;
|
||||
x = 0.525;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
@ -415,7 +416,7 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic {
|
||||
idc = 2668795;
|
||||
x = 0.549;
|
||||
x = 0.535;
|
||||
y = 0.352;
|
||||
w = 0.01;
|
||||
h = 0.003;
|
||||
|
@ -29,12 +29,13 @@ class Extended_Init_EventHandlers {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
};
|
||||
class ThingX {
|
||||
class Thing {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
exclude[] = {"ModuleEmpty_F", "ThingEffect", "Wreck"};
|
||||
};
|
||||
};
|
||||
class Land_PortableLight_single_F {
|
||||
class NonStrategic {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(initObject));
|
||||
};
|
||||
|
@ -1,3 +1,4 @@
|
||||
#define XEH_INHERITED class EventHandlers {class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};}
|
||||
|
||||
class CBA_Extended_EventHandlers;
|
||||
|
||||
@ -7,11 +8,9 @@ class CfgVehicles {
|
||||
class StaticWeapon: LandVehicle {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class StaticCannon: StaticWeapon {
|
||||
@ -23,11 +22,9 @@ class CfgVehicles {
|
||||
class Mortar_01_base_F: StaticMortar {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1.2,0};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
// Big 1.70 and 1.84 Autonomous AA Turrets
|
||||
@ -74,12 +71,9 @@ class CfgVehicles {
|
||||
class Items_base_F;
|
||||
class ReammoBox_F: ThingX {
|
||||
GVAR(canCarry) = 0;
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 0;
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class Slingload_base_F: ReammoBox_F {
|
||||
@ -162,43 +156,27 @@ class CfgVehicles {
|
||||
|
||||
//Plastic and metal case
|
||||
class PlasticCase_01_base_F: Items_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 270;
|
||||
};
|
||||
class MetalCase_01_base_F: Items_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
};
|
||||
|
||||
// Barrier
|
||||
class RoadCone_F: ThingX {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1.2,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
class RoadBarrier_F: RoadCone_F {
|
||||
@ -208,59 +186,37 @@ class CfgVehicles {
|
||||
// Misc crates
|
||||
class Constructions_base_F;
|
||||
class Land_WoodenBox_F: Constructions_base_F {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.4,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
GVAR(dragPosition)[] = {0,1.4,0};
|
||||
};
|
||||
class Land_WoodenCrate_01_F: ThingX {
|
||||
class EventHandlers {
|
||||
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
|
||||
};
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 270;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.5,0};
|
||||
GVAR(dragDirection) = 90;
|
||||
};
|
||||
class Land_PaperBox_01_small_closed_base_F: Items_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.5,0};
|
||||
GVAR(dragDirection) = 90;
|
||||
};
|
||||
class Box_UAV_06_base_F: Items_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition[]) = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition[]) = {0,1.5,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
class ACE_RepairItem_Base: ThingX {};
|
||||
|
||||
class ACE_Track: ACE_RepairItem_Base {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
};
|
||||
|
||||
class ACE_Wheel: ACE_RepairItem_Base {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
};
|
||||
|
||||
class Lamps_base_F;
|
||||
@ -278,19 +234,133 @@ class CfgVehicles {
|
||||
GVAR(canCarry) = 1;
|
||||
// if y < 0.9 player gets damage
|
||||
GVAR(carryPosition)[] = {0,0.9,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,0.7,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
class Land_Camping_Light_off_F: ThingX {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.9,1};
|
||||
GVAR(carryDirection) = 0;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,0.7,0};
|
||||
GVAR(dragDirection) = 0;
|
||||
};
|
||||
|
||||
// some terrain objects
|
||||
|
||||
class Land_CampingTable_F: ThingX {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,0.5};
|
||||
};
|
||||
class Land_CampingTable_small_F: ThingX {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,0.5};
|
||||
};
|
||||
class Land_GarbageContainer_closed_F: ThingX {
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragDirection) = 180;
|
||||
};
|
||||
class Land_GarbageContainer_open_F: ThingX {
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragDirection) = 180;
|
||||
};
|
||||
class Land_Sun_chair_F: ThingX {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryDirection) = 90;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1,0};
|
||||
GVAR(dragDirection) = 90;
|
||||
};
|
||||
class Land_TablePlastic_01_F: ThingX {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,0};
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
};
|
||||
class Land_Tyre_F: ThingX {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,1};
|
||||
};
|
||||
class Land_WoodenTable_large_F: ThingX {
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragDirection) = 90;
|
||||
};
|
||||
class Land_BarrelSand_F: Items_base_F {
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1,0};
|
||||
};
|
||||
class Land_BarrelWater_F: Items_base_F {
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1,0};
|
||||
};
|
||||
class Land_Bucket_F: Items_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,1};
|
||||
};
|
||||
class Land_CanisterPlastic_F: Items_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,0};
|
||||
};
|
||||
class Land_GarbageBarrel_01_english_F: Items_base_F {
|
||||
GVAR(canDrag) = 1;
|
||||
};
|
||||
class Land_MetalBarrel_F: Items_base_F {
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1,0};
|
||||
};
|
||||
class Land_Pallet_F: Constructions_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
};
|
||||
class Land_Pallet_vertical_F: Constructions_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,0.6};
|
||||
GVAR(carryDirection) = 180;
|
||||
};
|
||||
class Land_WheelCart_F: Constructions_base_F {
|
||||
GVAR(canDrag) = 1;
|
||||
};
|
||||
class Land_WorkStand_F: Constructions_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,1,0};
|
||||
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1,0};
|
||||
};
|
||||
class Market_base_F;
|
||||
class Land_Basket_F: Market_base_F {
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,0.5};
|
||||
};
|
||||
class Land_WoodenCart_F: Market_base_F {
|
||||
GVAR(canDrag) = 1;
|
||||
};
|
||||
|
||||
// static classes need XEH
|
||||
|
||||
class NonStrategic;
|
||||
class Land_Pallets_F: NonStrategic {
|
||||
XEH_INHERITED;
|
||||
GVAR(canDrag) = 1;
|
||||
};
|
||||
class Camping_base_F;
|
||||
class Land_CampingChair_V1_folded_F: Camping_base_F {
|
||||
XEH_INHERITED;
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,1};
|
||||
};
|
||||
class Stall_base_F;
|
||||
class Land_CratesPlastic_F: Stall_base_F {
|
||||
XEH_INHERITED;
|
||||
GVAR(canCarry) = 1;
|
||||
GVAR(carryPosition)[] = {0,0.6,1};
|
||||
};
|
||||
class House_Small_F;
|
||||
class Land_MetalBarrel_empty_F: House_Small_F {
|
||||
XEH_INHERITED;
|
||||
GVAR(canDrag) = 1;
|
||||
GVAR(dragPosition)[] = {0,1,0};
|
||||
};
|
||||
};
|
||||
|
@ -27,8 +27,8 @@ private _direction = _target getVariable [QGVAR(carryDirection), 0];
|
||||
// handle objects vs persons
|
||||
if (_target isKindOf "CAManBase") then {
|
||||
|
||||
[_unit, "AcinPercMstpSnonWnonDnon", 2, true] call EFUNC(common,doAnimation);
|
||||
[_target, "AinjPfalMstpSnonWnonDf_carried_dead", 2, true] call EFUNC(common,doAnimation);
|
||||
[_unit, "AcinPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
|
||||
[_target, "AinjPfalMstpSnonWnonDf_carried_dead", 2] call EFUNC(common,doAnimation);
|
||||
|
||||
// attach person
|
||||
_target attachTo [_unit, _position, "LeftShoulder"];
|
||||
|
@ -36,7 +36,7 @@ _target attachTo [_unit, _position];
|
||||
[QEGVAR(common,setDir), [_target, _direction], _target] call CBA_fnc_targetEvent;
|
||||
|
||||
if (_target isKindOf "CAManBase") then {
|
||||
[_target, "AinjPpneMrunSnonWnonDb_still", 0, true] call EFUNC(common,doAnimation);
|
||||
[_target, "AinjPpneMrunSnonWnonDb_still", 0] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
||||
_unit setVariable [QGVAR(isDragging), true, true];
|
||||
|
@ -43,9 +43,9 @@ detach _target;
|
||||
|
||||
if (_target isKindOf "CAManBase") then {
|
||||
if (_target getVariable ["ACE_isUnconscious", false]) then {
|
||||
[_target, "unconscious", 2, true] call EFUNC(common,doAnimation);
|
||||
[_target, "unconscious", 2] call EFUNC(common,doAnimation);
|
||||
} else {
|
||||
[_target, "", 2, true] call EFUNC(common,doAnimation); //@todo "AinjPpneMrunSnonWnonDb_release" seems to fall back to unconsciousness anim.
|
||||
[_target, "", 2] call EFUNC(common,doAnimation); //@todo "AinjPpneMrunSnonWnonDb_release" seems to fall back to unconsciousness anim.
|
||||
};
|
||||
};
|
||||
|
||||
@ -74,7 +74,7 @@ if !(_target isKindOf "CAManBase") then {
|
||||
};
|
||||
|
||||
if (_unit getVariable ["ACE_isUnconscious", false]) then {
|
||||
[_unit, "unconscious", 2, true] call EFUNC(common,doAnimation);
|
||||
[_unit, "unconscious", 2] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
||||
// recreate UAV crew
|
||||
|
@ -34,13 +34,13 @@ detach _target;
|
||||
// fix anim when aborting carrying persons
|
||||
if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then {
|
||||
if (vehicle _unit == _unit && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
|
||||
[_unit, "", 2, true] call EFUNC(common,doAnimation);
|
||||
[_unit, "", 2] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
||||
if (_target getVariable ["ACE_isUnconscious", false]) then {
|
||||
[_target, "unconscious", 2, true] call EFUNC(common,doAnimation);
|
||||
[_target, "unconscious", 2] call EFUNC(common,doAnimation);
|
||||
} else {
|
||||
[_target, "", 2, true] call EFUNC(common,doAnimation); //@todo
|
||||
[_target, "", 2] call EFUNC(common,doAnimation); //@todo
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -20,14 +20,14 @@ params ["_object"];
|
||||
private _config = configOf _object;
|
||||
|
||||
if (getNumber (_config >> QGVAR(canDrag)) == 1) then {
|
||||
private _position = getArray (_config >> QGVAR(dragPosition));
|
||||
private _position = [_config >> QGVAR(dragPosition), "ARRAY", [0, 1.5, 0]] call CBA_fnc_getConfigEntry;
|
||||
private _direction = getNumber (_config >> QGVAR(dragDirection));
|
||||
|
||||
[_object, true, _position, _direction] call FUNC(setDraggable);
|
||||
};
|
||||
|
||||
if (getNumber (_config >> QGVAR(canCarry)) == 1) then {
|
||||
private _position = getArray (_config >> QGVAR(carryPosition));
|
||||
private _position = [_config >> QGVAR(carryPosition), "ARRAY", [0, 1, 1]] call CBA_fnc_getConfigEntry;
|
||||
private _direction = getNumber (_config >> QGVAR(carryDirection));
|
||||
|
||||
[_object, true, _position, _direction] call FUNC(setCarryable);
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Arguments:
|
||||
* 0: Any object <OBJECT>
|
||||
* 1: true to enable dragging, false to disable <BOOL>
|
||||
* 2: Position offset for attachTo command (optional; default: [0,0,0])<ARRAY>
|
||||
* 2: Position offset for attachTo command (optional; default: [0, 1.5, 0]) <ARRAY>
|
||||
* 3: Direction in degree to rotate the object after attachTo (optional; default: 0) <NUMBER>
|
||||
* 4: Override weight limit (optional; default: false) <BOOL>
|
||||
*
|
||||
@ -23,7 +23,7 @@
|
||||
params ["_object", "_enableDrag", "_position", "_direction", ["_ignoreWeightDrag", false, [false]]];
|
||||
|
||||
if (isNil "_position") then {
|
||||
_position = _object getVariable [QGVAR(dragPosition), [0,0,0]];
|
||||
_position = _object getVariable [QGVAR(dragPosition), [0, 1.5, 0]];
|
||||
};
|
||||
|
||||
if (isNil "_direction") then {
|
||||
|
@ -45,8 +45,8 @@ if (_target isKindOf "CAManBase") then {
|
||||
_target setDir (getDir _unit + 180);
|
||||
_target setPosASL (getPosASL _unit vectorAdd (vectorDir _unit));
|
||||
|
||||
[_unit, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon", 2, true] call EFUNC(common,doAnimation);
|
||||
[_target, "AinjPfalMstpSnonWrflDnon_carried_Up", 2, true] call EFUNC(common,doAnimation);
|
||||
[_unit, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon", 2] call EFUNC(common,doAnimation);
|
||||
[_target, "AinjPfalMstpSnonWrflDnon_carried_Up", 2] call EFUNC(common,doAnimation);
|
||||
|
||||
_timer = CBA_missionTime + 10;
|
||||
|
||||
|
@ -80,7 +80,7 @@ if (_target isKindOf "CAManBase") then {
|
||||
_target setDir (getDir _unit + 180);
|
||||
_target setPosASL (getPosASL _unit vectorAdd (vectorDir _unit vectorMultiply 1.5));
|
||||
|
||||
[_target, "AinjPpneMrunSnonWnonDb_grab", 2, true] call EFUNC(common,doAnimation);
|
||||
[_target, "AinjPpneMrunSnonWnonDb_grab", 2] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
||||
// prevents draging and carrying at the same time
|
||||
|
@ -78,6 +78,7 @@ class CfgVehicles {
|
||||
vehicleClass = "Cargo";
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = ECSTRING(interaction,MainAction);
|
||||
selection = "";
|
||||
distance = 1.5;
|
||||
condition = "true";
|
||||
|
@ -894,14 +894,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName">
|
||||
<English>M6 SLAM Mine (Bottom Attack)</English>
|
||||
<!-- <Czech>Mina M6 SLAM</Czech> -->
|
||||
<French>/!\ Module obsolète /!\ - Mine M6 SLAM (par le bas)</French>
|
||||
<French>Mine M6 SLAM (par le bas)</French>
|
||||
<German>M6-SLAM-Mine (Bodenangriff)</German>
|
||||
<!-- <Italian>Mina M6 SLAM</Italian> -->
|
||||
<!-- <Polish>Mina M6 SLAM</Polish> -->
|
||||
<!-- <Portuguese>Mina SLAM M6</Portuguese> -->
|
||||
<!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
|
||||
<!-- <Spanish>Mina M6 SLAM</Spanish> -->
|
||||
<Polish>Mina M6 SLAM (atak od dołu)</Polish>
|
||||
<Spanish>Mina M6 SLAM (Ataque Inferior)</Spanish>
|
||||
<Italian>Mina M6 SLAM (base)</Italian>
|
||||
@ -915,14 +909,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_SLAMSideAttack_DisplayName">
|
||||
<English>M6 SLAM Mine (Side Attack)</English>
|
||||
<!-- <Czech>Mina M6 SLAM</Czech> -->
|
||||
<French>/!\ Module obsolète /!\ - Mine M6 SLAM (de flanc)</French>
|
||||
<French>Mine M6 SLAM (de flanc)</French>
|
||||
<German>M6-SLAM-Mine (Seitenangriff)</German>
|
||||
<!-- <Italian>Mina M6 SLAM</Italian> -->
|
||||
<!-- <Polish>Mina M6 SLAM</Polish> -->
|
||||
<!-- <Portuguese>Mina SLAM M6</Portuguese> -->
|
||||
<!-- <Russian>ПТ-мина M6 SLAM</Russian> -->
|
||||
<!-- <Spanish>Mina M6 SLAM</Spanish> -->
|
||||
<Polish>Mina M6 SLAM (atak od boku)</Polish>
|
||||
<Spanish>Mina M6 SLAM (Ataque Lateral)</Spanish>
|
||||
<Italian>Mina M6 SLAM (Laterale)</Italian>
|
||||
@ -936,14 +924,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDUrbanBig_Range_DisplayName">
|
||||
<English>Large IED (Urban, Pressure Plate)</English>
|
||||
<!-- <Czech>Velká nálož (městská)</Czech> -->
|
||||
<French>/!\ Module obsolète /!\ - Grand EEI (urbain, plaque de pression)</French>
|
||||
<French>Grand EEI (urbain, plaque de pression)</French>
|
||||
<German>Große USBV (Stadt, Druckplatte)</German>
|
||||
<!-- <Italian>IED grande (urbano)</Italian> -->
|
||||
<!-- <Polish>Duży IED (miasto)</Polish> -->
|
||||
<!-- <Portuguese>AEI grande (urbano)</Portuguese> -->
|
||||
<!-- <Russian>Большое СВУ (городское)</Russian> -->
|
||||
<!-- <Spanish>IED grande (Urbano)</Spanish> -->
|
||||
<Polish>Duży IED (miejski, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Grande (Urbano, Placa de presión)</Spanish>
|
||||
<Italian>IED grande (urbano, a pressione)</Italian>
|
||||
@ -957,14 +939,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDLandBig_Range_DisplayName">
|
||||
<English>Large IED (Dug-in, Pressure Plate)</English>
|
||||
<!-- <Czech>Velká nálož (zakopaná)</Czech> -->
|
||||
<French>/!\ Module obsolète /!\ - Grand EEI (enterré, plaque de pression)</French>
|
||||
<French>Grand EEI (enterré, plaque de pression)</French>
|
||||
<German>Große USBV (Eingegraben, Druckplatte)</German>
|
||||
<!-- <Italian>IED grande (interrato)</Italian> -->
|
||||
<!-- <Polish>Duży IED (zakopany)</Polish> -->
|
||||
<!-- <Portuguese>AEI grande (entrincheirado)</Portuguese> -->
|
||||
<!-- <Russian>Большое СВУ (зарытое)</Russian> -->
|
||||
<!-- <Spanish>IED grande (Enterrado)</Spanish> -->
|
||||
<Polish>Duży IED (zakopany, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Grande (Enterrado, Placa de presión)</Spanish>
|
||||
<Italian>IED grande (interrato, a pressione)</Italian>
|
||||
@ -978,14 +954,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDUrbanSmall_Range_DisplayName">
|
||||
<English>Small IED (Urban, Pressure Plate)</English>
|
||||
<!-- <Czech>Malá nálož (městská)</Czech> -->
|
||||
<French>/!\ Module obsolète /!\ - Petit EEI (Urbain, plaque de pression)</French>
|
||||
<French>Petit EEI (Urbain, plaque de pression)</French>
|
||||
<German>Kleine USBV (Stadt, Druckplatte)</German>
|
||||
<!-- <Italian>IED piccolo (urbano)</Italian> -->
|
||||
<!-- <Polish>Mały IED (miasto)</Polish> -->
|
||||
<!-- <Portuguese>AEI pequeno (urbano)</Portuguese> -->
|
||||
<!-- <Russian>Малое СВУ (городское)</Russian> -->
|
||||
<!-- <Spanish>IED pequeño (Urbano)</Spanish> -->
|
||||
<Polish>Mały IED (miejski, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Pequeño (Urbano, Placa de presión)</Spanish>
|
||||
<Italian>IED piccolo (urbano, a pressione)</Italian>
|
||||
@ -999,14 +969,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_IEDLandSmall_Range_DisplayName">
|
||||
<English>Small IED (Dug-in, Pressure Plate)</English>
|
||||
<!-- <Czech>Malá nálož (zakopaná)</Czech> -->
|
||||
<French>/!\ Module obsolète /!\ - Petit EEI (Enterré, plaque de pression)</French>
|
||||
<French>Petit EEI (Enterré, plaque de pression)</French>
|
||||
<German>Kleine USBV (Eingegraben, Druckplatte)</German>
|
||||
<!-- <Italian>IED piccolo (interrato)</Italian> -->
|
||||
<!-- <Polish>Mały IED (zakopany)</Polish> -->
|
||||
<!-- <Portuguese>AEI pequeno (entrincheirado)</Portuguese> -->
|
||||
<!-- <Russian>Малое СВУ (зарытое)</Russian> -->
|
||||
<!-- <Spanish>IED pequeño (Enterrado)</Spanish> -->
|
||||
<Polish>Mały IED (zakopany, płyta naciskowa)</Polish>
|
||||
<Spanish>IED Pequeño (Enterrado, Placa de presión)</Spanish>
|
||||
<Italian>IED piccolo (interrato, a pressione)</Italian>
|
||||
@ -1120,36 +1084,42 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerMin_DisplayName">
|
||||
<English>Minimum Time</English>
|
||||
<Russian>Минимальное время</Russian>
|
||||
<French>Durée minimale</French>
|
||||
<Japanese>最短時間</Japanese>
|
||||
<Spanish>Tiempo mínimo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerMax_DisplayName">
|
||||
<English>Maximum Time</English>
|
||||
<Russian>Максимальное время</Russian>
|
||||
<French>Durée maximale</French>
|
||||
<Japanese>最長時間</Japanese>
|
||||
<Spanish>Tiempo máximo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerDefault_DisplayName">
|
||||
<English>Default Time</English>
|
||||
<Russian>Стандартное время</Russian>
|
||||
<French>Durée par défaut</French>
|
||||
<Japanese>標準時間</Japanese>
|
||||
<Spanish>Tiempo por defecto</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerMin_Description">
|
||||
<English>Minimum time value (in seconds) for the explosive timer.</English>
|
||||
<Russian>Минимальное время до взрыва в секундах</Russian>
|
||||
<French>Définit la durée minimale paramétrable sur le minuteur.</French>
|
||||
<Japanese>起爆タイマーの最低時間 (秒) を設定します。</Japanese>
|
||||
<Spanish>Tiempo mínimo (en segundos) para el temporizador del explosivo.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerMax_Description">
|
||||
<English>Maximum time value (in seconds) for the explosive timer.</English>
|
||||
<Russian>Макисмальное время до взрыва в секундах</Russian>
|
||||
<French>Définit la durée maximale paramétrable sur le minuteur.</French>
|
||||
<Japanese>起爆タイマーの最長時間 (秒) を設定します。</Japanese>
|
||||
<Spanish>Tiempo máximo (en segundos) para el temporizador del explosivo.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TimerDefault_Description">
|
||||
<English>Default time value (in seconds) for the explosive timer.</English>
|
||||
<Russian>Стандартное время до взрыва в секундах</Russian>
|
||||
<French>Définit la durée paramétrée par défaut sur le minuteur.</French>
|
||||
<Japanese>起爆タイマーの標準時間 (秒) を設定します。</Japanese>
|
||||
<Spanish>Tiempo por defecto (en segundos) para el temporizador del explosivo.</Spanish>
|
||||
|
@ -523,42 +523,49 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_SatchelCharge_Remote_Mag_Throwable">
|
||||
<English>Explosive Satchel (Throwable)</English>
|
||||
<Russian>Ранец со взрывчаткой (Метательный)</Russian>
|
||||
<French>Charge en sacoche (lançable)</French>
|
||||
<Japanese>梱包爆薬 (投てき仕様)</Japanese>
|
||||
<Spanish>Carga de mochila explosiva (Lanzable)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_SatchelCharge_Description">
|
||||
<English>Type: Charge<br />Rounds: 1<br />Used on: Things that need to die</English>
|
||||
<Russian>Тип: Взрывчатка<br />Боеприпасы 1<br />Применение: На предметах, которые должны быть уничтожены</Russian>
|
||||
<French>Type : Charge<br />Munitions : 1<br />Application : à balancer sur des trucs qui doivent mourir</French>
|
||||
<Japanese>種類: 爆薬<br />弾数: 1<br />次で使用: 破壊すべき物に</Japanese>
|
||||
<Spanish>Tipo: Carga<br />Unidades: 1<br />Usada: Cosas que necesitan morir</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_SatchelCharge_LibText">
|
||||
<English>An explosive satchel that is throwable. 7 second fixed fuse</English>
|
||||
<Russian>Ранец со взрывчаткой. Детонация через 7 секунд</Russian>
|
||||
<French>Charge explosive lançable. Détonation après 7 secondes.</French>
|
||||
<Japanese>投げられる梱包爆薬。起爆までの時間は 7 秒間</Japanese>
|
||||
<Spanish>Carga de mochila explosiva que se puede lanzar. Espoleta fija de 7 segundos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_DemoCharge_Remote_Mag_Throwable">
|
||||
<English>Explosive Charge (Throwable)</English>
|
||||
<Russian>Заряд со взрывчаткой (Метательный)</Russian>
|
||||
<French>Charge explosive (lançable)</French>
|
||||
<Japanese>爆薬ブロック (投てき仕様)</Japanese>
|
||||
<Spanish>Carga explosiva (Lanzable)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_DemoCharge_LibText">
|
||||
<English>An explosive charge that is throwable. 7 second fixed fuse</English>
|
||||
<Russian>Заряд со взрывчаткой. Детонация через 7 секунд</Russian>
|
||||
<French>Bloc explosif lançable. Détonation après 7 secondes.</French>
|
||||
<Japanese>投げられる爆薬ブロック。起爆までの時間は 7 秒間</Japanese>
|
||||
<Spanish>Carga explosiva que se puede lanzar. Espoleta fija de 7 segundos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_Convert_Fuse">
|
||||
<English>Convert to short fuse</English>
|
||||
<Russian>Применить фитиль</Russian>
|
||||
<French>Appliquer une mèche</French>
|
||||
<Japanese>短信管へ変更</Japanese>
|
||||
<Spanish>Convertir a espoleta corta</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_Remove_Fuse">
|
||||
<English>Remove short fuse</English>
|
||||
<Russian>Убрать фитиль</Russian>
|
||||
<French>Retirer la mèche</French>
|
||||
<Japanese>短信管を削除</Japanese>
|
||||
<Spanish>Quitar espoleta corta</Spanish>
|
||||
@ -581,12 +588,14 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_convertExplosives_DisplayName">
|
||||
<English>Allow Explosive Conversion</English>
|
||||
<Russian>Разрешить фитили</Russian>
|
||||
<French>Autoriser les mèches (charges lançables)</French>
|
||||
<Japanese>爆薬変更を許可</Japanese>
|
||||
<Spanish>Permitir conversión de explosivos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_convertExplosives_Description">
|
||||
<English>Allow converting explosives to throwables</English>
|
||||
<Russian>Разрешает преобразовывать взрывчатку в метательные снаряды</Russian>
|
||||
<French>Cette option permet de rendre les charges explosives lançables, à la manière des grenades.\nPour celà, ouvrir l'inventaire et double-cliquer sur les charges, afin de leur appliquer une mèche.\nLa mèche peut se retirer en suivant la même procédure.</French>
|
||||
<Japanese>爆発物を投てき仕様へ交換できるようにします。</Japanese>
|
||||
<Spanish>Permitir convertir explosivos a lanzables</Spanish>
|
||||
|
@ -19,15 +19,21 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hellfire_KDescriptionShort">
|
||||
<English>Semi-active laser homing missile with high explosive anti-tank warhead</English>
|
||||
<Russian>Самонаводящаяся Ракета с фугасной противотанковой боевой частью и полуактивной лазерной системой наведения</Russian>
|
||||
<Spanish>Misil de guiado láser semi-activo con cabeza de alto explosivo anti-tanque</Spanish>
|
||||
<French>Missile antichar à guidage laser semi-actif (charge HEAT)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hellfire_LDescriptionShort">
|
||||
<English>Millimeter-wave radar guided missile with high explosive anti-tank warhead</English>
|
||||
<Russian>Радиолокационная управляемая ракета миллиметрового диапазона с фугасной противотанковой боевой частью</Russian>
|
||||
<Spanish>Misil guiado por radar de onda milimétrica con cabeza de alto explosivo anti-tanque</Spanish>
|
||||
<French>Missile antichar à guidage radar à ondes courtes (charge HEAT)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hellfire_NDescriptionShort">
|
||||
<English>Semi-active laser homing missile with metal augmented charge anti-personnel warhead</English>
|
||||
<Russian>Самонаводящаяся ракета с металлической увеличенной зарядной противопехотной боевой частью и полуактивной лазерной системой наведения</Russian>
|
||||
<Spanish>Misil guiado por láser semi-activo con cabeza de carga de metal aumentada anti-persona</Spanish>
|
||||
<French>Missile antipersonnel thermobarique à guidage laser semi-actif</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -36,15 +36,15 @@
|
||||
<Turkish>HuntIR Mermisi</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HuntIR_monitor_displayName">
|
||||
<English>HuntIR monitor</English>
|
||||
<English>HuntIR Monitor</English>
|
||||
<German>HuntIR Monitor</German>
|
||||
<Spanish>Monitor HuntIR</Spanish>
|
||||
<Czech>HuntIR monitor</Czech>
|
||||
<Czech>HuntIR Monitor</Czech>
|
||||
<Russian>HuntIR монитор</Russian>
|
||||
<Italian>Monitor HuntIR</Italian>
|
||||
<Polish>Odbiornik HuntIR</Polish>
|
||||
<French>Ecran HuntIR</French>
|
||||
<Hungarian>HuntIR monitor</Hungarian>
|
||||
<Hungarian>HuntIR Monitor</Hungarian>
|
||||
<Portuguese>Monitor HuntIR</Portuguese>
|
||||
<Japanese>HuntIR モニタ</Japanese>
|
||||
<Korean>HuntIR 모니터</Korean>
|
||||
|
@ -12,6 +12,7 @@ PREP(createVehiclesActions);
|
||||
PREP(ctrlSetParsedTextCached);
|
||||
PREP(findActionNode);
|
||||
PREP(handleEscapeMenu);
|
||||
PREP(initMenuReorder);
|
||||
PREP(isSubPath);
|
||||
PREP(keyDown);
|
||||
PREP(keyUp);
|
||||
|
@ -112,3 +112,11 @@ format ["%1 (%2)", (localize LSTRING(SelfInteractKey)), localize ELSTRING(common
|
||||
if (_menuBackgroundSetting == 1) exitWith {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);};
|
||||
if (_menuBackgroundSetting == 2) exitWith {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
// init menu reordering
|
||||
[QGVAR(newControllableObject), {
|
||||
params ["_class"];
|
||||
if !(_class isKindOf "CAManBase") exitWith {};
|
||||
_class call FUNC(initMenuReorder);
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
89
addons/interact_menu/functions/fnc_initMenuReorder.sqf
Normal file
89
addons/interact_menu/functions/fnc_initMenuReorder.sqf
Normal file
@ -0,0 +1,89 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Dystopian
|
||||
* Initializes "More" and "Move to Root" settings and menu.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Class name <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [typeOf player] call ace_interact_menu_fnc_initMenuReorder
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_class"];
|
||||
|
||||
private _actionTrees = GVAR(ActSelfNamespace) getVariable _class;
|
||||
private _rootNode = [_actionTrees, ["ACE_SelfActions"]] call FUNC(findActionNode);
|
||||
private _rootActions = _rootNode select 1;
|
||||
private _settingCategoryPrefix = format ["ACE %1 - ", LELSTRING(Interaction,InteractionMenuSelf)];
|
||||
|
||||
|
||||
// init "Move to Root" settings
|
||||
private _settingCategory = _settingCategoryPrefix + localize "STR_3DEN_Display3DEN_RemoveLayer_tooltip";
|
||||
|
||||
private _fnc_processNode = {
|
||||
params ["_node", "_parentVarName", "_titlePrefix", "_parentConditionString"];
|
||||
|
||||
_node params ["_actionData", "_actionChildren"];
|
||||
_actionData params ["_name", "_title", "", "", "_condition"];
|
||||
private _varName = _parentVarName + "__" + _name;
|
||||
private _titleFull = _titlePrefix + _title;
|
||||
private _conditionFullString = format ["%1 && {%2}", _parentConditionString, _condition call EFUNC(common,codeToString)];
|
||||
|
||||
// don't add already added setting
|
||||
if (isNil {missionNamespace getVariable _varName}) then {
|
||||
[_varName, "CHECKBOX", _titleFull, [_settingCategory, _rootActionTitle], false, 2, {}, true] call CBA_fnc_addSetting;
|
||||
};
|
||||
|
||||
if (missionNamespace getVariable [_varName, false]) then {
|
||||
private _newActionData = +(_actionData);
|
||||
_newActionData set [4, compile _conditionFullString];
|
||||
_rootActions pushBack [_newActionData, _actionChildren];
|
||||
};
|
||||
|
||||
{
|
||||
[_x, _varName, _titleFull + " / ", _conditionFullString] call _fnc_processNode;
|
||||
} forEach _actionChildren;
|
||||
};
|
||||
|
||||
private _rootActionsCount = count _rootActions;
|
||||
{
|
||||
_x params ["_actionData", "_actionChildren"];
|
||||
_actionData params ["_name", "_rootActionTitle", "", "", "_condition"];
|
||||
private _parentVarName = QGVAR(moveToRoot__) + _name;
|
||||
private _conditionString = _condition call EFUNC(common,codeToString);
|
||||
{
|
||||
[_x, _parentVarName, "", _conditionString] call _fnc_processNode;
|
||||
} forEach _actionChildren;
|
||||
} forEach _rootActions;
|
||||
|
||||
|
||||
// init "More" menu
|
||||
private _action = [QGVAR(more), localize "str_more_menu", "", {}, {true}] call FUNC(createAction);
|
||||
private _morePath = [_class, 1, ["ACE_SelfActions"], _action] call FUNC(addActionToClass);
|
||||
private _moreNode = [_actionTrees, _morePath] call FUNC(findActionNode);
|
||||
private _moreActions = _moreNode select 1;
|
||||
private _settingCategory = _settingCategoryPrefix + localize "str_more_menu";
|
||||
|
||||
{
|
||||
// prevent moved to root actions processing
|
||||
if (_forEachIndex >= _rootActionsCount) then {break};
|
||||
|
||||
_x params ["_actionData", "_actionChildren"];
|
||||
_actionData params ["_name", "_title"];
|
||||
if (_name isEqualTo QGVAR(more)) then {continue};
|
||||
|
||||
private _varName = QGVAR(more__) + _name;
|
||||
[_varName, "CHECKBOX", _title, _settingCategory, false, 2, {}, true] call CBA_fnc_addSetting;
|
||||
if !(missionNamespace getVariable [_varName, false]) then {continue};
|
||||
|
||||
private _newActionData = +(_actionData);
|
||||
// disable action instead of deleting because it can be used as parent lately
|
||||
_actionData set [4, {false}];
|
||||
_moreActions pushBack [_newActionData, _actionChildren];
|
||||
} forEach _rootActions;
|
@ -35,51 +35,46 @@ private _fnc_renderNearbyActions = {
|
||||
private _target = _x;
|
||||
|
||||
// Quick oclussion test. Skip objects more than 1 m behind the camera plane
|
||||
private _lambda = ((getPosASL _x) vectorDiff GVAR(cameraPosASL)) vectorDotProduct GVAR(cameraDir);
|
||||
if ((_lambda > -1) && {!isObjectHidden _target}) then {
|
||||
private _numInteractions = 0;
|
||||
private _lambda = getPosASL _target vectorDiff GVAR(cameraPosASL) vectorDotProduct GVAR(cameraDir);
|
||||
if (
|
||||
_lambda <= -1
|
||||
|| {isObjectHidden _target}
|
||||
// Prevent interacting with yourself or your own vehicle
|
||||
if (_target != ACE_player && {_target != vehicle ACE_player}) then {
|
||||
|| {_target in [ACE_player, vehicle ACE_player]}
|
||||
) then {continue};
|
||||
|
||||
private _hasInteractions = false;
|
||||
|
||||
// Iterate through object actions, find base level actions and render them if appropiate
|
||||
GVAR(objectActionList) = _target getVariable [QGVAR(actions), []];
|
||||
{
|
||||
// Only render them directly if they are base level actions
|
||||
if ((_x select 1) isEqualTo []) then {
|
||||
if (_x select 1 isNotEqualTo []) then {continue};
|
||||
// Try to render the menu
|
||||
private _action = _x;
|
||||
if ([_target, _action] call FUNC(renderBaseMenu)) then {
|
||||
_numInteractions = _numInteractions + 1;
|
||||
_hasInteractions = true;
|
||||
GVAR(foundActions) pushBack [_target, _action, GVAR(objectActionList)];
|
||||
};
|
||||
};
|
||||
nil
|
||||
} count GVAR(objectActionList);
|
||||
} forEach GVAR(objectActionList);
|
||||
|
||||
// Iterate through base level class actions and render them if appropiate
|
||||
private _namespace = GVAR(ActNamespace);
|
||||
private _classActions = _namespace getVariable typeOf _target;
|
||||
|
||||
private _classActions = GVAR(ActNamespace) getVariable [typeOf _target, []];
|
||||
{
|
||||
private _action = _x;
|
||||
// Try to render the menu
|
||||
if ([_target, _action] call FUNC(renderBaseMenu)) then {
|
||||
_numInteractions = _numInteractions + 1;
|
||||
_hasInteractions = true;
|
||||
GVAR(foundActions) pushBack [_target, _action, GVAR(objectActionList)];
|
||||
};
|
||||
nil
|
||||
} count _classActions;
|
||||
} forEach _classActions;
|
||||
|
||||
// Limit the amount of objects the player can interact with
|
||||
if (_numInteractions > 0) then {
|
||||
_numInteractObjects = _numInteractObjects + 1;
|
||||
if (_hasInteractions) then {
|
||||
INC(_numInteractObjects);
|
||||
if (_numInteractObjects >= MAXINTERACTOBJECTS) then {break};
|
||||
};
|
||||
};
|
||||
};
|
||||
if (_numInteractObjects >= MAXINTERACTOBJECTS) exitWith {};
|
||||
|
||||
nil
|
||||
} count _nearestObjects;
|
||||
} forEach _nearestObjects;
|
||||
};
|
||||
|
||||
private _fnc_renderLastFrameActions = {
|
||||
@ -88,8 +83,7 @@ private _fnc_renderLastFrameActions = {
|
||||
|
||||
GVAR(objectActionList) = _objectActionList;
|
||||
[_target, _action] call FUNC(renderBaseMenu);
|
||||
nil
|
||||
} count GVAR(foundActions);
|
||||
} forEach GVAR(foundActions);
|
||||
};
|
||||
|
||||
private _fnc_renderSelfActions = {
|
||||
@ -112,16 +106,14 @@ private _fnc_renderSelfActions = {
|
||||
{
|
||||
_action = _x;
|
||||
[_target, _action, _pos] call FUNC(renderBaseMenu);
|
||||
nil
|
||||
} count _classActions;
|
||||
} forEach _classActions;
|
||||
};
|
||||
|
||||
private _fnc_renderZeusActions = {
|
||||
{
|
||||
private _action = _x;
|
||||
[_this, _action, [0.5, 0.5]] call FUNC(renderBaseMenu);
|
||||
nil
|
||||
} count GVAR(ZeusActions);
|
||||
} forEach GVAR(ZeusActions);
|
||||
};
|
||||
|
||||
|
||||
@ -178,5 +170,4 @@ if (count GVAR(collectedActionPoints) > 1) then {
|
||||
{
|
||||
_x params ["_z", "_sPos", "_activeActionTree"];
|
||||
[[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu);
|
||||
nil
|
||||
} count GVAR(collectedActionPoints);
|
||||
} forEach GVAR(collectedActionPoints);
|
||||
|
@ -494,12 +494,14 @@
|
||||
<Russian>Объединять с единственным дочерним действием</Russian>
|
||||
<Japanese>サブ動作を統合</Japanese>
|
||||
<Spanish>Consolidar acciones hijo únicas</Spanish>
|
||||
<French>Combiner les sous-actions uniques</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_consolidateSingleChild_Description">
|
||||
<English>Combines parent action with only one child action together.</English>
|
||||
<Russian>Объединять родительское действие с единственным дочерним действием в одно.</Russian>
|
||||
<Japanese>メインの動作とサブ動作一つを統合して表示します。</Japanese>
|
||||
<Spanish>Combina acciones padre con una única accion hijo de forma conjunta</Spanish>
|
||||
<French>Lorsqu'un menu ne contient qu'une seule sous-action, elle est combinée avec son menu parent.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -628,7 +628,7 @@ class CfgVehicles {
|
||||
condition = "true";
|
||||
class ACE_OpenBox {
|
||||
displayName = CSTRING(OpenBox);
|
||||
condition = QUOTE((alive _target) && {(getNumber (configOf _target >> 'disableInventory')) == 0});
|
||||
condition = QUOTE(alive _target && {!lockedInventory _target} && {getNumber (configOf _target >> 'disableInventory') == 0});
|
||||
statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)), _target)]);
|
||||
showDisabled = 0;
|
||||
};
|
||||
|
@ -1208,18 +1208,21 @@
|
||||
<Russian>Установить %1</Russian>
|
||||
<Japanese>%1 を取り付け</Japanese>
|
||||
<Spanish>Acoplar %1</Spanish>
|
||||
<French>Fixer %1</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_weaponAttachmentsDetach">
|
||||
<English>Detach %1</English>
|
||||
<Russian>Снять %1</Russian>
|
||||
<Japanese>%1 を外す</Japanese>
|
||||
<Spanish>Desacoplar %1</Spanish>
|
||||
<French>Retirer %1</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_weaponAttachments_Description">
|
||||
<English>Enables attach/detach weapon attachment actions for current weapon.</English>
|
||||
<Russian>Включает действия Установить/Снять для приспособлений текущего оружия.</Russian>
|
||||
<Japanese>インタラクションから使用中の武器に対してのアタッチメント取り外しを可能にします。</Japanese>
|
||||
<Spanish>Activar acciones de acoplar/desacoplar accesorios para el arma actual.</Spanish>
|
||||
<French>Cette option permet de fixer/retirer des accessoires d'arme à partir du menu d'interaction personnel.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -30,4 +30,4 @@ scopeName "main";
|
||||
false
|
||||
} count [IDC_ITEMLIST_GROUND, IDC_ITEMLIST_SOLDIER, IDC_ITEMLIST_UNIFORM, IDC_ITEMLIST_VEST, IDC_ITEMLIST_BACKPACK];
|
||||
|
||||
-1
|
||||
controlNull
|
||||
|
@ -282,54 +282,63 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_maxRangeCamera_displayName">
|
||||
<English>Max range Camera</English>
|
||||
<Russian>Макс. дальность действия камеры</Russian>
|
||||
<French>Portée de la caméra</French>
|
||||
<Japanese>カメラ最大範囲</Japanese>
|
||||
<Spanish>Máximo alcance de cámara</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_maxRangeCamera_description">
|
||||
<English>Max range between a Camera and players to show the map gesture indicator</English>
|
||||
<Russian>Устанавливает макс. дальность между игроком и камерой для отображения жестов на карте</Russian>
|
||||
<French>Définit le rayon au-delà duquel une caméra ne verra plus l'indicateur de pointage des autres joueurs.</French>
|
||||
<Japanese>プレイヤーが行うマップ ジェスチャーをカメラから確認できる最大範囲を設定します。</Japanese>
|
||||
<Spanish>Máxima distancia entre una cámara y los jugadores para mostrar el indicador de gestos en mapa</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_allowSpectator_displayName">
|
||||
<English>Allow Spectator</English>
|
||||
<Russian>Разрешить видеть в спектаторе</Russian>
|
||||
<French>Autoriser les spectateurs</French>
|
||||
<Japanese>スペクテイターに許可</Japanese>
|
||||
<Spanish>Permitir espectador</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_allowSpectator_description">
|
||||
<English>Allows Spectator to See Map Gestures</English>
|
||||
<Russian>Позволяет наблюдателю видеть жесты на карте</Russian>
|
||||
<French>Permet aux spectateurs de voir le pointage des autres joueurs.</French>
|
||||
<Japanese>スペクテイターからマップ ジェスチャーを表示できるようにします。</Japanese>
|
||||
<Spanish>Permitir al espectador ver los gestos de mapa</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_allowCurator_displayName">
|
||||
<English>Allow Curator</English>
|
||||
<Russian>Разрешить куратору</Russian>
|
||||
<French>Autoriser les curateurs</French>
|
||||
<Japanese>キュレーターに許可</Japanese>
|
||||
<Spanish>Permitir Curador</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_allowCurator_description">
|
||||
<English>Allows Curator to See Map Gestures</English>
|
||||
<Russian>Позволяет куратору видеть жесты на карте</Russian>
|
||||
<French>Permet aux curateurs de voir le pointage des autres joueurs.</French>
|
||||
<Japanese>キュレーターからマップ ジェスチャーを表示できるようにします。</Japanese>
|
||||
<Spanish>Permitir al Curador ver los gestos de mapa</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_briefingMode_displayName">
|
||||
<English>Briefing Mode</English>
|
||||
<Russian>Режим брифинга</Russian>
|
||||
<French>Visibilité lors du briefing</French>
|
||||
<Japanese>ブリーフィング モード</Japanese>
|
||||
<Spanish>Modo de briefing</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_briefingMode_description">
|
||||
<English>What player can see what</English>
|
||||
<Russian>Определяет, какая группа игроков может видеть жесты на карте во время брифинга</Russian>
|
||||
<French>Définit quels pointages les joueurs peuvent voir lors du briefing.</French>
|
||||
<Japanese>プレイヤーが見ることができる対象を決定します。</Japanese>
|
||||
<Spanish>Qué puede ver cada jugador</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_briefingMode_Disabled">
|
||||
<English>Disabled</English>
|
||||
<Russian>Отключить</Russian>
|
||||
<French>Pointage désactivé</French>
|
||||
<Japanese>無効化</Japanese>
|
||||
<Spanish>Deshabilitado</Spanish>
|
||||
@ -360,6 +369,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Gestures_briefingMode_Proximity">
|
||||
<English>Proximity</English>
|
||||
<Russian>Все, кто рядом</Russian>
|
||||
<French>Proximité</French>
|
||||
<Japanese>付近のみ</Japanese>
|
||||
<Spanish>Proximidad</Spanish>
|
||||
|
@ -6,7 +6,9 @@ PREP(onLBSelChangedChannel);
|
||||
PREP(onLBSelChangedColor);
|
||||
PREP(onLBSelChangedShape);
|
||||
PREP(onSliderPosChangedAngle);
|
||||
PREP(onSliderMouseButtonUpAngle);
|
||||
PREP(onSliderPosChangedScale);
|
||||
PREP(onSliderMouseButtonUpScale);
|
||||
PREP(placeMarker);
|
||||
PREP(sendMarkersJIP);
|
||||
PREP(setMarkerJIP);
|
||||
|
@ -332,10 +332,12 @@
|
||||
|
||||
private _curSelAngle = GETGVAR(currentMarkerAngle,0);
|
||||
_aceAngleSlider sliderSetPosition _curSelAngle;
|
||||
_aceAngleSlider ctrlSetTooltip LLSTRING(MarkerDirectionScaleSlider_Tooltip);
|
||||
|
||||
//Update now and add eventHandler:
|
||||
[_aceAngleSlider, _curSelAngle] call FUNC(onSliderPosChangedAngle);
|
||||
_aceAngleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}];
|
||||
_aceAngleSlider ctrlAddEventHandler ["MouseButtonUp", {_this call FUNC(onSliderMouseButtonUpAngle)}];
|
||||
|
||||
////////////////////
|
||||
// init marker scale slider
|
||||
@ -348,8 +350,10 @@
|
||||
|
||||
private _curSelScale = GETGVAR(currentMarkerScale,1);
|
||||
_aceScaleSlider sliderSetPosition _curSelScale;
|
||||
_aceScaleSlider ctrlSetTooltip LLSTRING(MarkerDirectionScaleSlider_Tooltip);
|
||||
|
||||
//Update now and add eventHandler:
|
||||
[_aceScaleSlider, _curSelScale] call FUNC(onSliderPosChangedScale);
|
||||
_aceScaleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedScale)}];
|
||||
_aceScaleSlider ctrlAddEventHandler ["MouseButtonUp", {_this call FUNC(onSliderMouseButtonUpScale)}];
|
||||
}, _this] call CBA_fnc_execNextFrame;
|
||||
|
25
addons/markers/functions/fnc_onSliderMouseButtonUpAngle.sqf
Normal file
25
addons/markers/functions/fnc_onSliderMouseButtonUpAngle.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: 10Dozen
|
||||
* Angle slider clicked handler. Resets slider pos to 0 on RMB button up.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Slider (idc 1210) is expected <CONTROL>
|
||||
* 1: Button released (0 - Left mouse btn, 1 - Right mouse btn) <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [Slider, 1] call ace_markers_fnc_onSliderMouseButtonUpAngle
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_aceAngleSlider", "_button"];
|
||||
TRACE_2("params",_aceAngleSlider,_button);
|
||||
|
||||
if (_button isNotEqualTo 1) exitWith {};
|
||||
|
||||
_aceAngleSlider sliderSetPosition 0;
|
||||
[_aceAngleSlider, 0] call FUNC(onSliderPosChangedAngle);
|
25
addons/markers/functions/fnc_onSliderMouseButtonUpScale.sqf
Normal file
25
addons/markers/functions/fnc_onSliderMouseButtonUpScale.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: 10Dozen
|
||||
* Scale slider clicked handler. Resets slider pos to 1 on RMB button up.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Slider (idc 1420) is expected <CONTROL>
|
||||
* 1: Button released (0 - Left mouse btn, 1 - Right mouse btn) <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [Slider, 1] call ace_markers_fnc_onSliderMouseButtonUpScale
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_aceScaleSlider", "_button"];
|
||||
TRACE_2("params",_aceScaleSlider,_button);
|
||||
|
||||
if (_button isNotEqualTo 1) exitWith {};
|
||||
|
||||
_aceScaleSlider sliderSetPosition 1;
|
||||
[_aceScaleSlider, 1] call FUNC(onSliderPosChangedScale);
|
@ -47,7 +47,7 @@ TRACE_2("params",_allMapMarkers,_allMapMarkersProperties);
|
||||
|
||||
_x setMarkerPosLocal _pos;
|
||||
_x setMarkerDirLocal _dir;
|
||||
_x setMarkerSizeLocal _scale;
|
||||
_x setMarkerSizeLocal [_scale, _scale];
|
||||
};
|
||||
false
|
||||
} count allMapMarkers;
|
||||
|
@ -4,6 +4,8 @@
|
||||
<Key ID="STR_ACE_Markers_MarkerScale">
|
||||
<English>Scale: %1</English>
|
||||
<Spanish>Escala: %1</Spanish>
|
||||
<French>Échelle : %1</French>
|
||||
<Russian>Масштаб: %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_MarkerDirection">
|
||||
<English>Direction: %1°</English>
|
||||
@ -22,6 +24,11 @@
|
||||
<Chinese>方位: %1°</Chinese>
|
||||
<Turkish>Yön: %1°</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_MarkerDirectionScaleSlider_Tooltip">
|
||||
<English>Click RMB to reset</English>
|
||||
<Russian>Нажми ПКМ чтобы сбросить</Russian>
|
||||
<French>Clic droit pour réinitialiser</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_Module_DisplayName">
|
||||
<English>Markers</English>
|
||||
<German>Markierungen</German>
|
||||
@ -165,84 +172,98 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampEnabled">
|
||||
<English>Allow Timestamps</English>
|
||||
<Russian>Включить отображение времени на метках</Russian>
|
||||
<French>Permettre l'horodatage</French>
|
||||
<Japanese>タイムスタンプ許可</Japanese>
|
||||
<Spanish>Permitir marcas de tiempo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampEnabledDescription">
|
||||
<English>Whether to allow timestamps to be automatically applied to markers</English>
|
||||
<Russian>Автоматическое отображение времени, когда поставлена метка</Russian>
|
||||
<French>Active une interface permettant d'apposer un horodatage sur les marqueurs.</French>
|
||||
<Japanese>マーカーへ自動的にタイムスタンプを付与するかどうかを設定できます。</Japanese>
|
||||
<Spanish>Permitir que las marcas de tiempo sean automáticamente aplicadas a los marcadores</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_Timestamp">
|
||||
<English>Timestamp</English>
|
||||
<Russian>Время постановки метки</Russian>
|
||||
<French>Horodatage</French>
|
||||
<Japanese>タイムスタンプ</Japanese>
|
||||
<Spanish>Marca de tiempo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampTooltipNoWatch">
|
||||
<English>Watch Required</English>
|
||||
<Russian>Необходимы часы</Russian>
|
||||
<French>Une montre est requise.</French>
|
||||
<Japanese>時計の要求</Japanese>
|
||||
<Spanish>Reloj requerido</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormat">
|
||||
<English>Timestamp Format</English>
|
||||
<Russian>Формат времени</Russian>
|
||||
<French>Horodatage - Format</French>
|
||||
<Japanese>タイムスタンプ形式</Japanese>
|
||||
<Spanish>Formato de marca de tiempo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription0">
|
||||
<English>Changes the timestamp format</English>
|
||||
<Russian>Изменение формата времени</Russian>
|
||||
<French>Modifie le format de l'horodatage.</French>
|
||||
<Japanese>タイムスタンプの形式を変更します</Japanese>
|
||||
<Spanish>Cambia el formato de marca de tiempo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription1">
|
||||
<English>"HH" - Hour</English>
|
||||
<Russian>"ЧЧ" - Час</Russian>
|
||||
<French>"HH" - Heures</French>
|
||||
<Japanese>"HH" - 時間</Japanese>
|
||||
<Spanish>"HH" - Hora</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription2">
|
||||
<English>"MM" - Minute</English>
|
||||
<Russian>"ММ" - Минута</Russian>
|
||||
<French>"MM" - Minutes</French>
|
||||
<Japanese>"MM" - 分</Japanese>
|
||||
<Spanish>"MM" - Minuto</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription3">
|
||||
<English>"SS" - Seconds</English>
|
||||
<Russian>"СС" - Секунда</Russian>
|
||||
<French>"SS" - Secondes</French>
|
||||
<Japanese>"SS" - 秒</Japanese>
|
||||
<Spanish>"SS" - Segundos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription4">
|
||||
<English>"MM" - Milliseconds</English>
|
||||
<French>"MS" - Millisecondes</French>
|
||||
<Russian>"МС" - Миллисекунда</Russian>
|
||||
<French>"MM" - Millisecondes</French>
|
||||
<Japanese>"MM" - ミリ秒</Japanese>
|
||||
<Spanish>"MM" - Milisegundos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormat">
|
||||
<English>Timestamp Hour Format</English>
|
||||
<Russian>Часовой формат времени</Russian>
|
||||
<French>Horodatage - Système horaire</French>
|
||||
<Japanese>タイムスタンプ時刻形式</Japanese>
|
||||
<Spanish>Formato de hora de marca de tiempo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormat24">
|
||||
<English>24-Hour Clock</English>
|
||||
<Russian>24 часовой формат</Russian>
|
||||
<French>Format 24 heures</French>
|
||||
<Japanese>24 時間表記</Japanese>
|
||||
<Spanish>Reloj 24-Horas</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormat12">
|
||||
<English>12-Hour Clock</English>
|
||||
<Russian>12 часовой формат</Russian>
|
||||
<French>Format 12 heures</French>
|
||||
<Japanese>12 時間表記</Japanese>
|
||||
<Spanish>Reloj 12-Horas</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormatDescription">
|
||||
<English>Changes timestamp to use either 24-hour or 12-hour clock format</English>
|
||||
<Russian>Изменяет формат времени на маркере на 24 часовой, либо 12 часовой</Russian>
|
||||
<French>Permet de choisir le système d'horodatage souhaité, au format 12 ou 24 heures.</French>
|
||||
<Japanese>タイムスタンプの時刻を 24 時間か 12 時間表記のどちらかに変更できます。</Japanese>
|
||||
<Spanish>Cambia que la marca de tiempo sea en formato de reloj 24-horas o 12-horas</Spanish>
|
||||
|
@ -69,6 +69,8 @@
|
||||
<Key ID="STR_ACE_Maverick_l_mag_short">
|
||||
<English>MAVL</English>
|
||||
<Spanish>MAVL</Spanish>
|
||||
<French>MAVL</French>
|
||||
<Russian>MAVL</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Maverick_kh25ml_mag_descr">
|
||||
<English>Kh-25ML, Laser Guided Air-to-Ground-Missile</English>
|
||||
|
@ -1,3 +1,5 @@
|
||||
PREP(addDamageToUnit);
|
||||
PREP(adjustPainLevel);
|
||||
PREP(deserializeState);
|
||||
PREP(serializeState);
|
||||
PREP(setUnconscious);
|
||||
|
98
addons/medical/functions/fnc_deserializeState.sqf
Normal file
98
addons/medical/functions/fnc_deserializeState.sqf
Normal file
@ -0,0 +1,98 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Deserializes the medical state of a unit and applies it.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: State as JSON <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, _json] call ace_medical_fnc_deserializeState
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
params [["_unit", objNull, [objNull]], ["_json", "{}", [""]]];
|
||||
|
||||
if (isNull _unit) exitWith {};
|
||||
if (!local _unit) exitWith { ERROR_1("unit [%1] is not local",_unit) };
|
||||
|
||||
// If unit is not initialized yet, wait until event is raised
|
||||
if !(_unit getVariable [QGVAR(initialized), false]) exitWith {
|
||||
[QEGVAR(medical_status,initialized), {
|
||||
params ["_unit"];
|
||||
_thisArgs params ["_target"];
|
||||
|
||||
if (_unit == _target) then {
|
||||
_thisArgs call FUNC(deserializeState);
|
||||
[_thisType, _thisId] call CBA_fnc_removeEventHandler;
|
||||
};
|
||||
}, _this] call CBA_fnc_addEventHandlerArgs;
|
||||
};
|
||||
|
||||
private _state = [_json] call CBA_fnc_parseJSON;
|
||||
|
||||
// Set medical variables
|
||||
{
|
||||
_x params ["_var", "_default"];
|
||||
private _value = _state getVariable _x;
|
||||
|
||||
// Treat null as nil
|
||||
if (_value isEqualTo objNull) then {
|
||||
_value = _default;
|
||||
};
|
||||
|
||||
_unit setVariable [_var, _value, true];
|
||||
} forEach [
|
||||
[VAR_BLOOD_VOL, DEFAULT_BLOOD_VOLUME],
|
||||
[VAR_HEART_RATE, DEFAULT_HEART_RATE],
|
||||
[VAR_BLOOD_PRESS, [80, 120]],
|
||||
[VAR_PERIPH_RES, DEFAULT_PERIPH_RES],
|
||||
// State transition should handle this
|
||||
// [VAR_CRDC_ARRST, false],
|
||||
[VAR_HEMORRHAGE, 0],
|
||||
[VAR_PAIN, 0],
|
||||
[VAR_IN_PAIN, false],
|
||||
[VAR_PAIN_SUPP, 0],
|
||||
[VAR_OPEN_WOUNDS, []],
|
||||
[VAR_BANDAGED_WOUNDS, []],
|
||||
[VAR_STITCHED_WOUNDS, []],
|
||||
[VAR_FRACTURES, DEFAULT_FRACTURE_VALUES],
|
||||
// State transition should handle this
|
||||
// [VAR_UNCON, false],
|
||||
[VAR_TOURNIQUET, DEFAULT_TOURNIQUET_VALUES],
|
||||
[QEGVAR(medical,occludedMedications), nil],
|
||||
[QEGVAR(medical,ivBags), nil],
|
||||
[QEGVAR(medical,triageLevel), 0],
|
||||
[QEGVAR(medical,triageCard), []],
|
||||
[QEGVAR(medical,bodyPartDamage), [0,0,0,0,0,0]]
|
||||
// Offset needs to be converted
|
||||
// [VAR_MEDICATIONS, []]
|
||||
];
|
||||
|
||||
// Reset timers
|
||||
_unit setVariable [QEGVAR(medical,lastWakeUpCheck), nil];
|
||||
|
||||
// Convert medications offset to time
|
||||
private _medications = _state getVariable [VAR_MEDICATIONS, []];
|
||||
{
|
||||
_x set [1, _x#1 + CBA_missionTime];
|
||||
} forEach _medications;
|
||||
_unit setVariable [VAR_MEDICATIONS, _medications, true];
|
||||
|
||||
// Update effects
|
||||
[_unit] call EFUNC(medical_engine,updateDamageEffects);
|
||||
[_unit] call EFUNC(medical_status,updateWoundBloodLoss);
|
||||
|
||||
// Transition within statemachine
|
||||
private _currentState = [_unit, GVAR(STATE_MACHINE)] call CBA_statemachine_fnc_getCurrentState;
|
||||
private _targetState = _state getVariable [QGVAR(statemachineState), "Default"];
|
||||
[_unit, GVAR(STATE_MACHINE), _currentState, _targetState] call CBA_statemachine_fnc_manualTransition;
|
||||
|
||||
// Manually call wake up tranisition if necessary
|
||||
if (_currentState in ["Unconscious", "CardiacArrest"] && {_targetState in ["Default", "Injured"]}) then {
|
||||
[_unit, false] call EFUNC(medical_status,setUnconsciousState);
|
||||
};
|
64
addons/medical/functions/fnc_serializeState.sqf
Normal file
64
addons/medical/functions/fnc_serializeState.sqf
Normal file
@ -0,0 +1,64 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Serializes the medical state of a unit into a string.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Serialized state as JSON string
|
||||
*
|
||||
* Example:
|
||||
* [player] call ace_medical_fnc_serializeState
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
params [["_unit", objNull, [objNull]]];
|
||||
|
||||
private _state = [] call CBA_fnc_createNamespace;
|
||||
|
||||
// For variables, see: EFUNC(medical_status,initUnit)
|
||||
{
|
||||
_x params ["_var"];
|
||||
_state setVariable [_var, _unit getVariable _x];
|
||||
} forEach [
|
||||
[VAR_BLOOD_VOL, DEFAULT_BLOOD_VOLUME],
|
||||
[VAR_HEART_RATE, DEFAULT_HEART_RATE],
|
||||
[VAR_BLOOD_PRESS, [80, 120]],
|
||||
[VAR_PERIPH_RES, DEFAULT_PERIPH_RES],
|
||||
// State transition should handle this
|
||||
// [VAR_CRDC_ARRST, false],
|
||||
[VAR_HEMORRHAGE, 0],
|
||||
[VAR_PAIN, 0],
|
||||
[VAR_IN_PAIN, false],
|
||||
[VAR_PAIN_SUPP, 0],
|
||||
[VAR_OPEN_WOUNDS, []],
|
||||
[VAR_BANDAGED_WOUNDS, []],
|
||||
[VAR_STITCHED_WOUNDS, []],
|
||||
[VAR_FRACTURES, DEFAULT_FRACTURE_VALUES],
|
||||
// State transition should handle this
|
||||
// [VAR_UNCON, false],
|
||||
[VAR_TOURNIQUET, DEFAULT_TOURNIQUET_VALUES],
|
||||
[QEGVAR(medical,occludedMedications), nil],
|
||||
[QEGVAR(medical,ivBags), nil],
|
||||
[QEGVAR(medical,triageLevel), 0],
|
||||
[QEGVAR(medical,triageCard), []],
|
||||
[QEGVAR(medical,bodyPartDamage), [0,0,0,0,0,0]]
|
||||
// Time needs to be converted
|
||||
// [VAR_MEDICATIONS, []]
|
||||
];
|
||||
|
||||
// Convert medications time to offset
|
||||
private _medications = _unit getVariable [VAR_MEDICATIONS, []];
|
||||
{
|
||||
_x set [1, _x#1 - CBA_missionTime];
|
||||
} forEach _medications;
|
||||
_state setVariable [VAR_MEDICATIONS, _medications];
|
||||
|
||||
// Medical statemachine state
|
||||
private _currentState = [_unit, GVAR(STATE_MACHINE)] call CBA_statemachine_fnc_getCurrentState;
|
||||
_state setVariable [QGVAR(statemachineState), _currentState];
|
||||
|
||||
// Serialize & return
|
||||
[_state] call CBA_fnc_encodeJSON
|
@ -202,6 +202,7 @@
|
||||
<Japanese>添え木で治癒可能、駆け足できないように</Japanese>
|
||||
<Turkish>Ateller İyileştirir, Ama Koşu Yapamaz</Turkish>
|
||||
<Spanish>Las férulas sanan, pero no pueden trotar</Spanish>
|
||||
<Russian>Шины вылечивают, но не дают бежать трусцой</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_FractureChance_DisplayName">
|
||||
<English>Fracture Chance</English>
|
||||
|
@ -691,31 +691,43 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Damage_PainUnconsciousChance_DisplayName">
|
||||
<English>Pain Unconscious Chance</English>
|
||||
<Russian>Шанс потерять сознание от боли</Russian>
|
||||
<Polish>Szansa na nieprzytomność przez ból</Polish>
|
||||
<Japanese>気絶確立</Japanese>
|
||||
<Spanish>Probabilidad de inconsciencia por dolor</Spanish>
|
||||
<French>Douleur - Chance d'évanouissement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Damage_PainUnconsciousChance_Description">
|
||||
<English>The probability of a person falling unconscious when their pain is above the tolerance threshold upon receiving damage.</English>
|
||||
<Russian>Шанс, что человек потеряет сознание, когда его боль выше допустимого порога при получении травмы.</Russian>
|
||||
<Polish>Szansa że osoba straci przytomność gdy jej ból jest powyżej tolerowalnego progu podczas otrzymywania obrażeń.</Polish>
|
||||
<Japanese>ユニットがダメージを受けた時に痛みが許容しきい値を超えた場合、気絶をする確立を設定します。</Japanese>
|
||||
<Spanish>La probabilidad de que una persona caiga inconsciente cuando su dolor está por encima del umbral al haber recibido daño.</Spanish>
|
||||
<French>La probabilité pour qu'une personne perde connaissance lorsque la douleur ressentie est supérieure à son seuil de tolérance.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Damage_DeathChance_DisplayName">
|
||||
<English>Fatal Injury Death Chance</English>
|
||||
<Russian>Вероятность смерти от смертельной травмы</Russian>
|
||||
<Spanish>Probabilidad de muerte por herida fatal</Spanish>
|
||||
<French>Blessure mortelle - Chance de décès</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Damage_DeathChance_Description">
|
||||
<English>The chance of dying to a fatal injury.</English>
|
||||
<Russian>Шанс умереть от смертельной травмы.</Russian>
|
||||
<Spanish>La probabilidad de morir a causa de una herida fatal.</Spanish>
|
||||
<French>La probabilité de mourir lors d'une "blessure mortelle".\nUne blessure mortelle est définie par des dommages importants à la tête ou au cœur.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Damage_EnableVehicleCrashes_DisplayName">
|
||||
<English>Enable Vehicle Crash Damage</English>
|
||||
<Russian>Включить урон при аварии в транспортном средстве.</Russian>
|
||||
<Spanish>Activar daño por accidente de vehículo</Spanish>
|
||||
<French>Blessures de collision (véhicules)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Damage_EnableVehicleCrashes_Description">
|
||||
<English>Controls whether crew receives damage from vehicle collisions.</English>
|
||||
<Russian>Контролирует, получает ли экипаж урон от столкновения транспортного средства.</Russian>
|
||||
<Spanish>Controla si la tripulación recibe daño debido a colisiones en vehículo.</Spanish>
|
||||
<French>Définit si les passagers à bord des véhicules peuvent être blessés en cas d'accident.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
10
addons/medical_engine/CfgFunctions.hpp
Normal file
10
addons/medical_engine/CfgFunctions.hpp
Normal file
@ -0,0 +1,10 @@
|
||||
class CfgFunctions {
|
||||
class A3_Mark {
|
||||
class Revive {
|
||||
class reviveInit {
|
||||
// Disable BI medical system
|
||||
postInit = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,9 +1,10 @@
|
||||
PREP(handleDamage);
|
||||
PREP(applyAnimAfterRagdoll);
|
||||
PREP(damageBodyPart);
|
||||
PREP(updateBodyPartVisuals);
|
||||
PREP(updateDamageEffects);
|
||||
PREP(setStructuralDamage);
|
||||
PREP(setUnconsciousAnim);
|
||||
PREP(disableThirdParty);
|
||||
PREP(getHitpointArmor);
|
||||
PREP(getItemArmor);
|
||||
PREP(applyAnimAfterRagdoll);
|
||||
PREP(handleDamage);
|
||||
PREP(setStructuralDamage);
|
||||
PREP(setUnconsciousAnim);
|
||||
PREP(updateBodyPartVisuals);
|
||||
PREP(updateDamageEffects);
|
||||
|
@ -78,4 +78,6 @@ addMissionEventHandler ["Loaded", {
|
||||
};
|
||||
}] call CBA_fnc_addEventhandler;
|
||||
|
||||
[] call FUNC(disableThirdParty);
|
||||
|
||||
ADDON = true;
|
||||
|
@ -14,10 +14,10 @@ class CfgPatches {
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#include "CfgActions.hpp"
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgExtendedAnimation.hpp"
|
||||
#include "CfgFunctions.hpp"
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
|
31
addons/medical_engine/functions/fnc_disableThirdParty.sqf
Normal file
31
addons/medical_engine/functions/fnc_disableThirdParty.sqf
Normal file
@ -0,0 +1,31 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Detects and disables third party medical systems.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_medical_engine_fnc_disableThirdParty
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
// SOG:PF CDLC revive system
|
||||
// Pretend revive system was already initialized.
|
||||
// See: vn_fnc_module_advancedrevive
|
||||
vn_advanced_revive_started = true;
|
||||
|
||||
// Farooq Revive
|
||||
// Overwrite player initialization.
|
||||
far_player_init = compileFinal "";
|
||||
[{!isNil "far_debugging"}, {
|
||||
far_isDragging = nil; // Disable "Drag & Carry animation fix" loop - cannot be killed because spawned while true.
|
||||
far_muteRadio = nil; // Disable initialization hint.
|
||||
far_muteACRE = nil; // Same, but for very old versions.
|
||||
far_debugging = false; // Disable adding event handlers to AI in SP.
|
||||
}, [], 5] call CBA_fnc_waitUntilAndExecute;
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Modifies the action color to match the triage level.
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -194,12 +194,14 @@
|
||||
<French>Couleur de triage dans le menu d'interaction</French>
|
||||
<Japanese>インタラクションにトリアージ レベル表示</Japanese>
|
||||
<Spanish>Mostrar nivel de triado en menú de interacción</Spanish>
|
||||
<Russian>Показывать группу триажа в меню взаимодействий</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_GUI_InteractionMenuShowTriage_Description">
|
||||
<English>Shows the patient's triage level by changing the color of the main and medical menu actions.</English>
|
||||
<French>Modifie la couleur du menu d'interactions et du sous-menu médical en fonction de la fiche de triage du patient.</French>
|
||||
<Japanese>メニューと医療メニューの色を変更し、患者のトリアージ レベルを表示します。</Japanese>
|
||||
<Spanish>Mostrar el nivel de triado en el paciente cambiando el color de acciones de menú principales y médicas </Spanish>
|
||||
<Russian>Отображает установленную группу карты медицинской сортировки (триажа), изменяя цвет действий основного и медицинского меню.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_GUI_Medical">
|
||||
<English>Medical</English>
|
||||
|
@ -146,6 +146,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestBleedout_DisplayName">
|
||||
<English>Bleedout During Cardiac Arrest</English>
|
||||
<Russian>Кровотечение во время остановки сердца</Russian>
|
||||
<German>Ausbluten im Herzstillstand</German>
|
||||
<French>Saignement durant l'arrêt cardiaque</French>
|
||||
<Japanese>心停止中の失血</Japanese>
|
||||
@ -153,6 +154,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestBleedout_Description">
|
||||
<English>Controls whether a person can die in cardiac arrest by blood loss before the cardiac arrest time runs out.</English>
|
||||
<Russian>Определяет, можно ли умереть от потери крови во время остановки сердца, даже если время жизни при остановке сердца еще не истекло.</Russian>
|
||||
<German>Legt fest, ob man während des Herzstillstands durch Blutverlust sterben kann, auch wenn die Überlebenszeit im Herzstillstand noch nicht ausgelaufen ist.</German>
|
||||
<French>Définit si un joueur en arrêt cardiaque peut mourir par exsanguination, avant que la durée de l'arrêt cardiaque définie ci-dessus ne soit écoulée.</French>
|
||||
<Japanese>心停止時間を超え死亡する前に、失血による心停止で死亡するかどうかを決定します。</Japanese>
|
||||
|
@ -80,5 +80,7 @@ if (_isRespawn) then {
|
||||
[{
|
||||
params ["_unit"];
|
||||
TRACE_3("Unit Init",_unit,local _unit,typeOf _unit);
|
||||
|
||||
_unit setVariable [QEGVAR(medical,initialized), true, true];
|
||||
[QGVAR(initialized), [_unit]] call CBA_fnc_localEvent;
|
||||
}, [_unit], 0.5] call CBA_fnc_waitAndExecute;
|
||||
|
@ -494,7 +494,6 @@ class ADDON {
|
||||
};
|
||||
class CutMinor: Cut {
|
||||
effectiveness = 2;
|
||||
reopeningChance = 0.3;
|
||||
};
|
||||
class CutMedium: Cut {
|
||||
effectiveness = 1;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: SynixeBrett
|
||||
* Author: Brett Mayson
|
||||
* Checks if the patient can be placed in a bodybag.
|
||||
*
|
||||
* 'vehicle _patient' always returns the body
|
||||
|
@ -21,10 +21,12 @@ TRACE_2("cprLocal",_medic,_patient);
|
||||
|
||||
[_patient, "activity", LSTRING(Activity_CPR), [[_medic, false, true] call EFUNC(common,getName)]] call FUNC(addToLog);
|
||||
|
||||
if ((random 1) < GVAR(cprSuccessChance)) then {
|
||||
TRACE_1("CPR random success",GVAR(cprSuccessChance));
|
||||
private _bloodVolume = GET_BLOOD_VOLUME(_patient);
|
||||
private _successChance = linearConversion [BLOOD_VOLUME_CLASS_4_HEMORRHAGE, BLOOD_VOLUME_CLASS_2_HEMORRHAGE, _bloodVolume, GVAR(cprSuccessChanceMin), GVAR(cprSuccessChanceMax), true];
|
||||
if ((random 1) < _successChance) then {
|
||||
TRACE_2("CPR random success",_bloodVolume,_successChance);
|
||||
[QEGVAR(medical,CPRSucceeded), _patient] call CBA_fnc_localEvent;
|
||||
} else {
|
||||
TRACE_1("CPR random fail",GVAR(cprSuccessChance));
|
||||
TRACE_2("CPR random fail",_bloodVolume,_successChance);
|
||||
};
|
||||
|
||||
|
@ -252,9 +252,18 @@
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(cprSuccessChance),
|
||||
QGVAR(cprSuccessChanceMin),
|
||||
"SLIDER",
|
||||
[LSTRING(CPRSuccessChance_DisplayName), LSTRING(CPRSuccessChance_Description)],
|
||||
[LSTRING(CPRSuccessChanceMin_DisplayName), LSTRING(CPRSuccessChanceMin_Description)],
|
||||
[ELSTRING(medical,Category), LSTRING(SubCategory_Treatment)],
|
||||
[0, 1, 0.4, 2, true],
|
||||
true
|
||||
] call CBA_settings_fnc_init;
|
||||
|
||||
[
|
||||
QGVAR(cprSuccessChanceMax),
|
||||
"SLIDER",
|
||||
[LSTRING(CPRSuccessChanceMax_DisplayName), LSTRING(CPRSuccessChanceMax_Description)],
|
||||
[ELSTRING(medical,Category), LSTRING(SubCategory_Treatment)],
|
||||
[0, 1, 0.4, 2, true],
|
||||
true
|
||||
|
@ -261,12 +261,14 @@
|
||||
<French>Durée d'interaction - Auto-injecteurs</French>
|
||||
<Japanese>注射器の使用時間</Japanese>
|
||||
<Spanish>Tiempo de tratamiento de autoinyección</Spanish>
|
||||
<Russian>Время ввода автоинъектора</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeAutoinjector_Description">
|
||||
<English>Time, in seconds, required to administer medication using an autoinjector.</English>
|
||||
<French>Définit le temps nécessaire à l'administration d'une substance auto-injectable (en secondes).</French>
|
||||
<Japanese>注射器の使用に掛かる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para administrar medicación utilizando un autoinyectador.</Spanish>
|
||||
<Russian>Время, необходимое для введения медикаментов автоинъектором (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeTourniquet_DisplayName">
|
||||
<English>Tourniquet Treatment Time</English>
|
||||
@ -274,6 +276,7 @@
|
||||
<German>Tourniquet-Behandlungszeit</German>
|
||||
<Japanese>止血帯の使用時間</Japanese>
|
||||
<Spanish>Tiempo de tratamiento de torniquete</Spanish>
|
||||
<Russian>Время наложения/снятия жгута</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeTourniquet_Description">
|
||||
<English>Time, in seconds, required to apply/remove a tourniquet.</English>
|
||||
@ -281,6 +284,7 @@
|
||||
<German>Zeit in Sekunden, die benötigt wird, um ein Tourniquet anzuwenden.</German>
|
||||
<Japanese>止血帯の使用/排除に掛かる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para aplicar/quitar un torniquete.</Spanish>
|
||||
<Russian>Время, необходимое для наложения/снятия жгута (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeIV_DisplayName">
|
||||
<English>IV Bag Treatment Time</English>
|
||||
@ -288,6 +292,7 @@
|
||||
<German>IV Beutelbehandlungszeit</German>
|
||||
<Japanese>点滴の使用時間</Japanese>
|
||||
<Spanish>Tiempo de tratamiento de bolsa de IV</Spanish>
|
||||
<Russian>Время применения пакета внутривенного переливания</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeIV_Description">
|
||||
<English>Time, in seconds, required to administer an IV bag.</English>
|
||||
@ -295,6 +300,7 @@
|
||||
<German>Zeit in Sekunden, die benötigt wird, um einen Infusionsbeutel aufzutragen.</German>
|
||||
<Japanese>点滴の投与に掛かる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para administrar una bolsa de IV.</Spanish>
|
||||
<Russian>Время, необходимое для применения пакета внутривенного переливания (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeSplint_DisplayName">
|
||||
<English>Splint Treatment Time</English>
|
||||
@ -302,6 +308,7 @@
|
||||
<German>Schienenbehandlungszeit</German>
|
||||
<Japanese>添え木の使用時間</Japanese>
|
||||
<Spanish>TIempo de tratamiento de férula</Spanish>
|
||||
<Russian>Время наложения шины</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeSplint_Description">
|
||||
<English>Time, in seconds, required to apply a splint.</English>
|
||||
@ -309,6 +316,7 @@
|
||||
<German>Zeit in Sekunden, die zum Anbringen einer Schiene benötigt wird.</German>
|
||||
<Japanese>添え木の使用に掛かる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>TIempo, en segundos, requerido para aplicar una férula.</Spanish>
|
||||
<Russian>Время, необходимое для наложения шины (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeBodyBag_DisplayName">
|
||||
<English>Body Bag Use Time</English>
|
||||
@ -316,6 +324,7 @@
|
||||
<German>Anwendungszeit für Leichensack</German>
|
||||
<Japanese>死体袋の使用時間</Japanese>
|
||||
<Spanish>TIempo de uso de bolsa para cuerpos</Spanish>
|
||||
<Russian>Время использования мешка для трупов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeBodyBag_Description">
|
||||
<English>Time, in seconds, required to put a patient in a body bag.</English>
|
||||
@ -323,6 +332,7 @@
|
||||
<German>Zeit in Sekunden, die benötigt wird, um einen Leichensack aufzutragen.</German>
|
||||
<Japanese>死体袋の使用に掛かる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para poner a un paciente en una bolsa para cuerpos.</Spanish>
|
||||
<Russian>Время, необходимое для того чтобы упаковать труп в мешок (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicEpinephrine_DisplayName">
|
||||
<English>Allow Epinephrine</English>
|
||||
@ -641,12 +651,14 @@
|
||||
<French>Durée d'interaction - Sutures</French>
|
||||
<Japanese>縫合時間</Japanese>
|
||||
<Spanish>Tiempo de sutura de herida</Spanish>
|
||||
<Russian>Время зашивания ран</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_WoundStitchTime_Description">
|
||||
<English>Time, in seconds, required to stitch a single wound.</English>
|
||||
<French>Définit le temps nécessaire à la suture d'une plaie (en secondes).</French>
|
||||
<Japanese>縫合に掛かる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para suturar una única herida.</Spanish>
|
||||
<Russian>Время, необходимое для зашивания одной раны (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_AllowSelfIV_DisplayName">
|
||||
<English>Self IV Transfusion</English>
|
||||
@ -679,12 +691,14 @@
|
||||
<French>Housse mortuaire - Autoriser patients inconscients</French>
|
||||
<Japanese>無意識者を死体袋に</Japanese>
|
||||
<Spanish>Permitir bolsa para cuerpos inconsciente</Spanish>
|
||||
<Russian>Разрешить упаковывать пациентов без сознания в мешки для трупов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_AllowBodyBagUnconscious_Description">
|
||||
<English>Enables placing an unconscious patient in a body bag.</English>
|
||||
<French>Active la possibilité de placer des patients inconscients dans les housses mortuaires.\nAttention : le cas échéant cela provoquera la mort du patient.</French>
|
||||
<Japanese>気絶しているプレイヤーを死体袋へ入れられるかどうかを決定します。</Japanese>
|
||||
<Spanish>Permitir colocar a un paciente inconsciente en una bolsa para cuerpos.</Spanish>
|
||||
<Russian>Разрешает упаковывать пациентов без сознания в мешки для трупов.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicIV_DisplayName">
|
||||
<English>Allow IV Transfusion</English>
|
||||
@ -694,7 +708,7 @@
|
||||
<Chinese>允許操作點滴</Chinese>
|
||||
<Japanese>IV 輸血の制限</Japanese>
|
||||
<Czech>Povolit IV transfuzi</Czech>
|
||||
<Russian>Разрешить переливание IV группы крови</Russian>
|
||||
<Russian>Разрешить внутривенное переливание</Russian>
|
||||
<Spanish>Permitir transfusión de IV</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicIV_Description">
|
||||
@ -705,18 +719,22 @@
|
||||
<Chinese>要有何種醫療水準才可注射點滴。</Chinese>
|
||||
<Japanese>IV 輸血を行うのに訓練済レベルを要求とします。</Japanese>
|
||||
<Czech>Úroveň výcviku nutná pro IV transfuzi.</Czech>
|
||||
<Russian>Уровень навыка требуемый для переливания крови IV группы.</Russian>
|
||||
<Russian>Уровень навыка, требуемый для осуществления внутривенного переливания.</Russian>
|
||||
<Spanish>Nivel de capacitación requerido para transfusiones de IV.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_LocationIV_DisplayName">
|
||||
<English>Locations IV Transfusion</English>
|
||||
<Japanese>IV 輸血の場所制限</Japanese>
|
||||
<Spanish>Ubicación para transfusiones IV</Spanish>
|
||||
<French>Lieux perfusions IV</French>
|
||||
<Russian>Места введения пакетов внутривенного переливания</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_LocationIV_Description">
|
||||
<English>Controls where IV transfusions can be performed.</English>
|
||||
<Japanese>IV 輸血を行える場所を決定できます。</Japanese>
|
||||
<Spanish>Controla dónde pueden ser realizadas las transfusiones IV.</Spanish>
|
||||
<French>Définit les lieux où la pose de perfusions est autorisée.</French>
|
||||
<Russian>Определяет к каким частям тела разрешено применять пакеты внутренного переливания.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_ConvertItems_DisplayName">
|
||||
<English>Convert Vanilla Items</English>
|
||||
@ -912,45 +930,35 @@
|
||||
<Turkish>Araçlar ve Tesisler</Turkish>
|
||||
<Spanish>Vehículos e instalaciones médicas</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_CPRSuccessChance_DisplayName">
|
||||
<English>CPR Success Chance</English>
|
||||
<Japanese>心肺蘇生の成功率</Japanese>
|
||||
<French>Chance de réussite de la RCP</French>
|
||||
<Russian>Шанс успешной реанимации</Russian>
|
||||
<Portuguese>Chance de ter sucesso com SBV</Portuguese>
|
||||
<Chinese>心肺復甦術成功率</Chinese>
|
||||
<Czech>Pravděpodobnost úspěchu CPR</Czech>
|
||||
<Italian>Possibilità di successo della RCP</Italian>
|
||||
<Polish>Szansa powodzenia RKO</Polish>
|
||||
<German>HLW Erfolgsrate</German>
|
||||
<Turkish>CPR Başarı Şansı</Turkish>
|
||||
<Spanish>Probabilidad de éxito del RCP</Spanish>
|
||||
<Key ID="STR_ACE_Medical_Treatment_CPRSuccessChanceMin_DisplayName">
|
||||
<English>CPR Success Chance Minimum</English>
|
||||
<French>RCP - Chance minimale de réussite</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_CPRSuccessChance_Description">
|
||||
<English>Probability that CPR will be successful in restoring heart rhythm.</English>
|
||||
<Japanese>心肺蘇生によって心拍を戻せる確率を決定できます。</Japanese>
|
||||
<French>Probabilité de rétablir un rythme cardiaque suite à une RCP.</French>
|
||||
<Russian>Вероятность успешного проведения сердечно-лёгочной реанимации (СЛР).</Russian>
|
||||
<Portuguese>Probabilidade que um SBV restaurará o batimento cardíaco.</Portuguese>
|
||||
<Chinese>心肺復甦術恢復心率的機率。</Chinese>
|
||||
<Czech>Pravděpodobnost, že CPR obnoví srdeční tep.</Czech>
|
||||
<Italian>E' probabile che la rianimazione RCP abbia successo nel ripristinare il ritmo cardiaco.</Italian>
|
||||
<Polish>Prawdopodobieństwo przwyrócenia akcji serca poprzez wykonanie RKO</Polish>
|
||||
<German>Wahrscheinlichkeit, dass HLW bei der Wiederherstellung des Herzrhythmus erfolgreich sein wird.</German>
|
||||
<Turkish>Kalp ritmini geri kazanmada CPR'nin başarılı olma olasılığı.</Turkish>
|
||||
<Spanish>Probabilidad de que el RCP sea exitoso restaurando el ritmo cardíaco.</Spanish>
|
||||
<Key ID="STR_ACE_Medical_Treatment_CPRSuccessChanceMax_DisplayName">
|
||||
<English>CPR Success Chance Maximum</English>
|
||||
<French>RCP - Chance maximale de réussite</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_CPRSuccessChanceMin_Description">
|
||||
<English>Minimum probability that performing CPR will restore heart rhythm.\nThis minimum value is used when the patient has at least "Lost a fatal amount of blood".\nAn interpolated probability is used when the patient's blood volume is between the minimum and maximum thresholds.</English>
|
||||
<French>Probabilité minimale de rétablir un rythme cardiaque suite à une RCP.\nCette valeur minimale est définie pour un patient à l'état "A perdu une quantité critique de sang".\nUne interpolation est faite entre la chance minimale et maximale, en fonction du volume sanguin du patient.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_CPRSuccessChanceMax_Description">
|
||||
<English>Maximum probability that performing CPR will restore heart rhythm.\nThis maximum value is used when the patient has at most "Lost some blood".\nAn interpolated probability is used when the patient's blood volume is between the minimum and maximum thresholds.</English>
|
||||
<French>Probabilité maximale de rétablir un rythme cardiaque suite à une RCP.\nCette valeur maximale est définie pour un patient à l'état "A perdu une faible quantité de sang".\nUne interpolation est faite entre la chance minimale et maximale, en fonction du volume sanguin du patient.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeCPR_DisplayName">
|
||||
<English>CPR Treatment Time</English>
|
||||
<French>Durée d'interaction - RCP</French>
|
||||
<French>RCP - Durée d'interaction</French>
|
||||
<Japanese>CPR の動作時間</Japanese>
|
||||
<Spanish>Tiempo de tratamiento de RCP</Spanish>
|
||||
<Russian>Время проведения СЛР</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeCPR_Description">
|
||||
<English>Time, in seconds, required to perform CPR on a patient.</English>
|
||||
<French>Définit le temps nécessaire à la mise en œuvre d'une RCP (en secondes).</French>
|
||||
<Japanese>心肺蘇生にかかる時間 (秒) を決定します。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para realizar RCP en un paciente.</Spanish>
|
||||
<Russian>Время, необходимое для проведения сердечно-лёгочной реанимации (СЛР) (в секундах).</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_HolsterRequired_DisplayName">
|
||||
<English>Holster Required</English>
|
||||
@ -4410,6 +4418,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_bodybagWhileStillAlive">
|
||||
<English>The body twitched and may not be dead!</English>
|
||||
<Russian>Тело дернулось и, возможно, пациент жив!</Russian>
|
||||
<French>L'unité a bougé et n'est peut-être pas morte !</French>
|
||||
<Japanese>身体が動き死んでないようだ!</Japanese>
|
||||
<Spanish>¡El cuerpo se retorció y puede que no esté muerto!</Spanish>
|
||||
|
@ -586,11 +586,15 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_previousMode">
|
||||
<English>MicroDAGR - Previous Mode</English>
|
||||
<Russian>MicroDAGR - Предыдущий режим</Russian>
|
||||
<Spanish>MicroDAGR - Modo anterior</Spanish>
|
||||
<French>MicroDAGR - Mode précédent</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_nextMode">
|
||||
<English>MicroDAGR - Next Mode</English>
|
||||
<Russian>MicroDAGR - Следующий режим</Russian>
|
||||
<Spanish>MicroDAGR - Modo siguiente</Spanish>
|
||||
<French>MicroDAGR - Mode suivant</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -27,23 +27,63 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_NVG_Gen1: NVGoggles_OPFOR {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen1);
|
||||
displayName = CSTRING(NVG_Gen1_black);
|
||||
GVAR(generation) = 1;
|
||||
};
|
||||
class ACE_NVG_Gen1_Brown: NVGoggles {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen1_brown);
|
||||
GVAR(generation) = 1;
|
||||
};
|
||||
class ACE_NVG_Gen1_Green: NVGoggles_INDEP {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen1_green);
|
||||
GVAR(generation) = 1;
|
||||
};
|
||||
class ACE_NVG_Gen2_Black: NVGoggles_OPFOR {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen2_black);
|
||||
GVAR(generation) = 2;
|
||||
};
|
||||
class ACE_NVG_Gen2_Brown: NVGoggles {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen2_brown);
|
||||
GVAR(generation) = 2;
|
||||
};
|
||||
class ACE_NVG_Gen2: NVGoggles_INDEP {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen2);
|
||||
displayName = CSTRING(NVG_Gen2_green);
|
||||
GVAR(generation) = 2;
|
||||
};
|
||||
class ACE_NVG_Gen4_Black: NVGoggles_OPFOR {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen4_black);
|
||||
GVAR(generation) = 4;
|
||||
};
|
||||
class ACE_NVG_Gen4: NVGoggles {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen4);
|
||||
displayName = CSTRING(NVG_Gen4_brown);
|
||||
GVAR(generation) = 4;
|
||||
};
|
||||
class ACE_NVG_Gen4_Green: NVGoggles_INDEP {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(NVG_Gen4_green);
|
||||
GVAR(generation) = 4;
|
||||
};
|
||||
class ACE_NVG_Wide_Black: NVGoggles_OPFOR {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
modelOptics = QPATHTOF(models\ACE_nvg_wide_optics);
|
||||
displayName = CSTRING(NVG_Wide_black);
|
||||
};
|
||||
class ACE_NVG_Wide: NVGoggles {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
modelOptics = QPATHTOF(models\ACE_nvg_wide_optics);
|
||||
displayName = CSTRING(NVG_FullScreen);
|
||||
displayName = CSTRING(NVG_Wide_brown);
|
||||
};
|
||||
class ACE_NVG_Wide_Green: NVGoggles_INDEP {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
modelOptics = QPATHTOF(models\ACE_nvg_wide_optics);
|
||||
displayName = CSTRING(NVG_Wide_green);
|
||||
};
|
||||
|
||||
|
||||
|
@ -4,7 +4,21 @@ class CfgPatches {
|
||||
class ADDON {
|
||||
name = COMPONENT_NAME;
|
||||
units[] = {};
|
||||
weapons[] = {"ACE_NVG_Gen1", "ACE_NVG_Gen2", /*"ACE_NVG_Gen3",*/ "ACE_NVG_Gen4", "ACE_NVG_Wide"};
|
||||
weapons[] = {
|
||||
"ACE_NVG_Gen1",
|
||||
"ACE_NVG_Gen1_Brown",
|
||||
"ACE_NVG_Gen1_Green",
|
||||
"ACE_NVG_Gen2_Black",
|
||||
"ACE_NVG_Gen2_Brown",
|
||||
"ACE_NVG_Gen2",
|
||||
/*"ACE_NVG_Gen3",*/
|
||||
"ACE_NVG_Gen4_Black",
|
||||
"ACE_NVG_Gen4",
|
||||
"ACE_NVG_Gen4_Green",
|
||||
"ACE_NVG_Wide_Black",
|
||||
"ACE_NVG_Wide",
|
||||
"ACE_NVG_Wide_Green"
|
||||
};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
|
@ -16,39 +16,35 @@
|
||||
<Turkish>ACE Gece Görüşü</Turkish>
|
||||
<Spanish>ACE visión nocturna</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen1">
|
||||
<English>NV Goggles (Gen1)</English>
|
||||
<Czech>Noktovizor (Gen1)</Czech>
|
||||
<French>JVN (Gen1)</French>
|
||||
<German>NS-Brille (1. Gen.)</German>
|
||||
<Italian>Occhiali notturni (Gen1)</Italian>
|
||||
<Polish>Gogle noktowizyjne (Gen1)</Polish>
|
||||
<Portuguese>Óculos de visão noturna (Gen1)</Portuguese>
|
||||
<Russian>ПНВ (Gen1)</Russian>
|
||||
<Spanish>Gafas de visión nocturna (Gen1)</Spanish>
|
||||
<Hungarian>Éjjellátó szemüveg (1. Gen.)</Hungarian>
|
||||
<Japanese>暗視装置 (第1世代)</Japanese>
|
||||
<Korean>야투경 (1세대)</Korean>
|
||||
<Chinesesimp>夜视镜 (初代)</Chinesesimp>
|
||||
<Chinese>夜視鏡 (初代)</Chinese>
|
||||
<Turkish>GG Gözlüğü (1. Jen)</Turkish>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen1_brown">
|
||||
<English>NV Goggles (Gen1, Brown)</English>
|
||||
<French>JVN (Gen1, marron)</French>
|
||||
<Russian>ПНВ (Gen1, Коричневый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen2">
|
||||
<English>NV Goggles (Gen2)</English>
|
||||
<Czech>Noktovizor (Gen2)</Czech>
|
||||
<French>JVN (Gen2)</French>
|
||||
<German>NS-Brille (2. Gen.)</German>
|
||||
<Italian>Occhiali notturni (Gen2)</Italian>
|
||||
<Polish>Gogle noktowizyjne (Gen2)</Polish>
|
||||
<Portuguese>Óculos de visão noturna (Gen2)</Portuguese>
|
||||
<Russian>ПНВ (Gen2)</Russian>
|
||||
<Spanish>Gafas de visión nocturna (Gen2)</Spanish>
|
||||
<Hungarian>Éjjellátó szemüveg (2. Gen.)</Hungarian>
|
||||
<Japanese>暗視装置 (第2世代)</Japanese>
|
||||
<Korean>야투경 (2세대)</Korean>
|
||||
<Chinesesimp>夜视镜 (二代)</Chinesesimp>
|
||||
<Chinese>夜視鏡 (二代)</Chinese>
|
||||
<Turkish>GG Gözlüğü (2. Jen)</Turkish>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen1_black">
|
||||
<English>NV Goggles (Gen1, Black)</English>
|
||||
<French>JVN (Gen1, noires)</French>
|
||||
<Russian>ПНВ (Gen1, Чёрный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen1_green">
|
||||
<English>NV Goggles (Gen1, Green)</English>
|
||||
<French>JVN (Gen1, vertes)</French>
|
||||
<Russian>ПНВ (Gen1, Зелёный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen2_brown">
|
||||
<English>NV Goggles (Gen2, Brown)</English>
|
||||
<French>JVN (Gen2, marron)</French>
|
||||
<Russian>ПНВ (Gen2, Коричневый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen2_black">
|
||||
<English>NV Goggles (Gen2, Black)</English>
|
||||
<French>JVN (Gen2, noires)</French>
|
||||
<Russian>ПНВ (Gen2, Чёрный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen2_green">
|
||||
<English>NV Goggles (Gen2, Green)</English>
|
||||
<French>NV Goggles (Gen2, vertes)</French>
|
||||
<Russian>ПНВ (Gen2, Зелёный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen3">
|
||||
<English>NV Goggles (Gen3)</English>
|
||||
@ -118,39 +114,35 @@
|
||||
<Chinese>夜視鏡 (三代, 黑色)</Chinese>
|
||||
<Turkish>GG Gözlüğü (3. Jen Siyah)</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen4">
|
||||
<English>NV Goggles (Gen4)</English>
|
||||
<Czech>Noktovizor (Gen4)</Czech>
|
||||
<French>JVN (Gen4)</French>
|
||||
<German>NS-Brille (4. Gen.)</German>
|
||||
<Italian>Occhiali notturni (Gen4)</Italian>
|
||||
<Polish>Gogle noktowizyjne (Gen4)</Polish>
|
||||
<Portuguese>Óculos de visão noturna (Gen4)</Portuguese>
|
||||
<Russian>ПНВ (Gen4)</Russian>
|
||||
<Spanish>Gafas de visión nocturna (Gen4)</Spanish>
|
||||
<Hungarian>Éjjellátó szemüveg (4. Gen.)</Hungarian>
|
||||
<Japanese>暗視装置 (第4世代)</Japanese>
|
||||
<Korean>야투경 (4세대)</Korean>
|
||||
<Chinesesimp>夜视镜 (四代)</Chinesesimp>
|
||||
<Chinese>夜視鏡 (四代)</Chinese>
|
||||
<Turkish>GG Gözlüğü (4. Jen)</Turkish>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen4_brown">
|
||||
<English>NV Goggles (Gen4, Brown)</English>
|
||||
<French>JVN (Gen4, marron)</French>
|
||||
<Russian>ПНВ (Gen4, Коричневый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_FullScreen">
|
||||
<English>NV Goggles (Wide)</English>
|
||||
<German>NS-Brille (Weitwinkel)</German>
|
||||
<Spanish>Gafas de visión nocturna (Panorámicas)</Spanish>
|
||||
<Polish>Gogle noktowizyjne (panoramiczne)</Polish>
|
||||
<Czech>Noktovizor (Širokoúhlý)</Czech>
|
||||
<Russian>ПНВ (Широкоугольный)</Russian>
|
||||
<French>JVN (Large)</French>
|
||||
<Hungarian>Éjjellátó szemüveg (széles látószögű)</Hungarian>
|
||||
<Portuguese>Óculos de visão noturna (Panorâmico)</Portuguese>
|
||||
<Italian>Occhiali notturni (Larghi)</Italian>
|
||||
<Japanese>暗視装置 (ワイド)</Japanese>
|
||||
<Korean>야투경 (넓음)</Korean>
|
||||
<Chinesesimp>夜视镜 (宽版)</Chinesesimp>
|
||||
<Chinese>夜視鏡 (寬版)</Chinese>
|
||||
<Turkish>GG Gözlüğü (Geniş)</Turkish>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen4_black">
|
||||
<English>NV Goggles (Gen4, Black)</English>
|
||||
<French>JVN (Gen4, noires)</French>
|
||||
<Russian>ПНВ (Gen4, Чёрный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Gen4_green">
|
||||
<English>NV Goggles (Gen4, Green)</English>
|
||||
<French>JVN (Gen4, vertes)</French>
|
||||
<Russian>ПНВ (Gen4, Зелёный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Wide_brown">
|
||||
<English>NV Goggles (Wide, Brown)</English>
|
||||
<French>JVN (Large, marron)</French>
|
||||
<Russian>ПНВ (Широкий, Коричневый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Wide_black">
|
||||
<English>NV Goggles (Wide, Black)</English>
|
||||
<French>JVN (Large, noires)</French>
|
||||
<Russian>ПНВ (Широкий, Чёрный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVG_Wide_green">
|
||||
<English>NV Goggles (Wide, Green)</English>
|
||||
<French>JVN (Large, vertes)</French>
|
||||
<Russian>ПНВ (Широкий, Зелёный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NightVision_NVGBrightness">
|
||||
<English>Brightness: %1</English>
|
||||
|
@ -16,3 +16,11 @@ class Extended_PostInit_EventHandlers {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_Respawn_EventHandlers {
|
||||
class CAManBase {
|
||||
class ADDON {
|
||||
respawn = QUOTE(_this call FUNC(handleRespawn));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -10,6 +10,7 @@ PREP(displayTemperature);
|
||||
PREP(firedEH);
|
||||
PREP(getWeaponData);
|
||||
PREP(handleTakeEH);
|
||||
PREP(handleRespawn);
|
||||
PREP(jamWeapon);
|
||||
PREP(loadCoolestSpareBarrel);
|
||||
PREP(overheat);
|
||||
|
26
addons/overheating/functions/fnc_handleRespawn.sqf
Normal file
26
addons/overheating/functions/fnc_handleRespawn.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: 10Dozen
|
||||
* Handle respawn events and clears list of jammed weapons.
|
||||
* DefaultAction that blocks firing is removed by the game (remains on corpse?),
|
||||
* but variables need to be cleared manually.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Corpse <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [alive, body] call ace_overheating_fnc_handleRespawn
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_unit","_dead"];
|
||||
if !(local _unit) exitWith {};
|
||||
|
||||
// --- Reset variables related to jamming
|
||||
_unit setVariable [QGVAR(jammedWeapons), nil];
|
||||
_unit setVariable [QGVAR(JammingActionID), nil];
|
@ -12,7 +12,7 @@ PREP_RECOMPILE_END;
|
||||
QGVAR(hideAltimeter),
|
||||
"CHECKBOX",
|
||||
[LSTRING(HideAltimeter), LSTRING(HideAltimeter_tooltip)],
|
||||
format ["ACE %1", localize ELSTRING(common,DisplayName)],
|
||||
["ACE Uncategorized", localize "str_dn_parachute"],
|
||||
true,
|
||||
false,
|
||||
{[QGVAR(hideAltimeter), _this, false] call EFUNC(common,cbaSettings_settingChanged)}
|
||||
|
@ -4,16 +4,20 @@
|
||||
* Perform the cut parachute action (move unit out and delete)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Object <OBJECT>
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Parachute <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player, vehicle player] call FUNC(cutParachute);
|
||||
* [player, vehicle player] call ace_parachute_fnc_cutParachute;
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
params ["_unit", "_parachute"];
|
||||
TRACE_2("cutParachute", _unit, _parachute);
|
||||
|
||||
playSound3d ["A3\Sounds_F\characters\parachute\parachute_landing.wss", _unit];
|
||||
_unit action ["GetOut", _parachute];
|
||||
deleteVehicle _parachute;
|
||||
|
@ -135,6 +135,8 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Parachute_FailureChance">
|
||||
<English>Parachute Failure Chance</English>
|
||||
<Russian>Вероятность отказа парашюта</Russian>
|
||||
<French>Chance de défaillance du parachute</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -20,14 +20,14 @@ class CfgVehicles {
|
||||
statement = QUOTE(false call FUNC(openRangeCard));
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\RangeCard_Icon.paa);
|
||||
exceptions[] = {"notOnMap"};
|
||||
exceptions[] = {"notOnMap", "isNotInside"};
|
||||
class GVAR(openCopy) {
|
||||
displayName = CSTRING(OpenRangeCardCopy);
|
||||
condition = QUOTE(call FUNC(canShowCopy) && !GVAR(RangeCardOpened));
|
||||
statement = QUOTE(true call FUNC(openRangeCard));
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\RangeCard_Icon.paa);
|
||||
exceptions[] = {"notOnMap"};
|
||||
exceptions[] = {"notOnMap", "isNotInside"};
|
||||
};
|
||||
class GVAR(makeCopy) {
|
||||
displayName = CSTRING(CopyRangeCard);
|
||||
@ -35,7 +35,7 @@ class CfgVehicles {
|
||||
statement = QUOTE(GVAR(zeroRangeCopy)=GVAR(zeroRange); GVAR(boreHeightCopy)=GVAR(boreHeight); GVAR(ammoClassCopy)=GVAR(ammoClass); GVAR(magazineClassCopy)=GVAR(magazineClass); GVAR(weaponClassCopy)=GVAR(weaponClass););
|
||||
showDisabled = 0;
|
||||
icon = QPATHTOF(UI\RangeCard_Icon.paa);
|
||||
exceptions[] = {"notOnMap"};
|
||||
exceptions[] = {"notOnMap", "isNotInside"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1329,6 +1329,7 @@
|
||||
<Japanese>M183 梱包爆薬 (投てき仕様)</Japanese>
|
||||
<Turkish>M183 Demolition Charge (Throwable)</Turkish>
|
||||
<Spanish>Carga de demolición M183 (Lanzable)</Spanish>
|
||||
<Russian>M183 Комплектный подрывной заряд (Бросаемый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_DemoCharge_Name">
|
||||
<English>M112 Demolition Block</English>
|
||||
@ -1353,6 +1354,7 @@
|
||||
<Japanese>M112 爆薬ブロック (投てき仕様)</Japanese>
|
||||
<Turkish>M112 Demolition Charge (Throwable)</Turkish>
|
||||
<Spanish>Bloque de demolición M112 (Lanzable)</Spanish>
|
||||
<Russian>M112 подрывной заряд (Бросаемый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RealisticNames_HandGrenade_Name">
|
||||
<English>M67 Fragmentation Grenade</English>
|
||||
|
@ -74,7 +74,7 @@ while {((count _ammoCounts) < _maxMagazines) && {_ammoToAdd > 0}} do {
|
||||
_ammoToAdd = _ammoToAdd - _xAdd;
|
||||
_ammoAdded = _ammoAdded + _xAdd;
|
||||
_ammoCounts pushBack _xAdd;
|
||||
if (!_arrayModified) then {
|
||||
if (_arrayModified) then {
|
||||
TRACE_1("adding new mag to array",_xAdd);
|
||||
} else {
|
||||
TRACE_1("adding new mag directly",_xAdd);
|
||||
|
@ -20,6 +20,7 @@
|
||||
<Key ID="STR_ACE_SmallArms_25Rnd_45_Name">
|
||||
<English>.45 ACP 25Rnd Mag</English>
|
||||
<Polish>25-nab. mag. .45 ACP </Polish>
|
||||
<Russian>Магазин, 25 патр. .45 ACP</Russian>
|
||||
<French>Mag. 25 balles .45 ACP</French>
|
||||
<Spanish>Cargador de 25 proyectiles de .45 ACP</Spanish>
|
||||
<German>25-Schuss-.45-ACP-Magazin</German>
|
||||
@ -30,6 +31,7 @@
|
||||
<Key ID="STR_ACE_SmallArms_25Rnd_45_Tracer_Green_Name">
|
||||
<English>.45 ACP 25Rnd Tracers (Green) Mag</English>
|
||||
<Polish>25-nab. mag. .45 ACP (zielony smugacz)</Polish>
|
||||
<Russian>Магазин, 25 патр. .45 ACP (зелёные трассеры)</Russian>
|
||||
<French>Mag. 25 traçantes (vertes) .45 ACP</French>
|
||||
<Spanish>Cargador de 25 balas trazadoras (verde) de .45 ACP</Spanish>
|
||||
<German>25-Schuss-.45-ACP-Vermin-Magazin (Leuchtspur Grün)</German>
|
||||
@ -40,6 +42,7 @@
|
||||
<Key ID="STR_ACE_SmallArms_25Rnd_45_Tracer_Red_Name">
|
||||
<English>.45 ACP 25Rnd Tracers (Red) Mag</English>
|
||||
<Polish>25-nab. mag. .45 ACP (czerwony smugacz)</Polish>
|
||||
<Russian>Магазин, 25 патр. .45 ACP (красные трассеры)</Russian>
|
||||
<French>Mag. 25 traçantes (rouges) .45 ACP</French>
|
||||
<Spanish>Cargador de 25 balas trazadoras (rojo) de .45 ACP</Spanish>
|
||||
<German>25-Schuss-.45-ACP-Vermin-Magazin (Leuchtspur Rot)</German>
|
||||
@ -50,6 +53,7 @@
|
||||
<Key ID="STR_ACE_SmallArms_25Rnd_45_Tracer_Yellow_Name">
|
||||
<English>.45 ACP 25Rnd Tracers (Yellow) Mag</English>
|
||||
<Polish>25-nab. mag. .45 ACP (żółty smugacz)</Polish>
|
||||
<Russian>Магазин, 25 патр. .45 ACP (жёлтые трассеры)</Russian>
|
||||
<French>Mag. 25 traçantes (jaunes) .45 ACP</French>
|
||||
<Spanish>Cargador de 25 balas trazadoras (amarillo) de .45 ACP</Spanish>
|
||||
<German>25-Schuss-.45-ACP-Vermin-Magazin (Nachlade-Leuchtspur Gelb)</German>
|
||||
@ -60,6 +64,7 @@
|
||||
<Key ID="STR_ACE_SmallArms_8Rnd_45_Name">
|
||||
<English>.45 ACP 8Rnd Mag</English>
|
||||
<Polish>8-nab. mag. .45 ACP </Polish>
|
||||
<Russian>Магазин, 8 патр. .45 ACP</Russian>
|
||||
<French>Mag. 8 balles .45 ACP</French>
|
||||
<Spanish>Cargador de 8 proyectiles de .45 ACP</Spanish>
|
||||
<German>8-Schuss-.45-ACP-Magazin</German>
|
||||
|
@ -244,54 +244,63 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_Category">
|
||||
<English>ACE Trenches</English>
|
||||
<Russian>ACE Окопы</Russian>
|
||||
<French>ACE Tranchées</French>
|
||||
<Japanese>ACE 塹壕</Japanese>
|
||||
<Spanish>ACETrincheras</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_SmallEnvelopeDigDuration_DisplayName">
|
||||
<English>Small Trench Dig Duration</English>
|
||||
<Russian>Продолжительность копания малого окопа</Russian>
|
||||
<French>Petites tranchées - durée d'excavation</French>
|
||||
<Japanese>小型塹壕の完成時間</Japanese>
|
||||
<Spanish>Tiempo de cavar trinchera pequeña</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_SmallEnvelopeDigDuration_Description">
|
||||
<English>Time, in seconds, required to dig a small trench.</English>
|
||||
<Russian>Время в секундах, необходимое для рытья малого окопа</Russian>
|
||||
<French>Définit le temps nécessaire au déploiement des petites tranchées (en secondes).</French>
|
||||
<Japanese>小型塹壕が完成するまでの時間 (秒) を設定できます。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para cavar una trinchera pequeña.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_SmallEnvelopeRemoveDuration_DisplayName">
|
||||
<English>Small Trench Remove Duration</English>
|
||||
<Russian>Продолжительность удаления малого окопа</Russian>
|
||||
<French>Petites tranchées - durée de retrait</French>
|
||||
<Japanese>小型塹壕の削除時間</Japanese>
|
||||
<Spanish>Tiempo de eliminar trinchera pequeña</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_SmallEnvelopeRemoveDuration_Description">
|
||||
<English>Time, in seconds, required to remove a small trench.</English>
|
||||
<Russian>Время в секундах, необходимое для удаления малого окопа</Russian>
|
||||
<French>Définit le temps nécessaire pour le retrait des petites tranchées (en secondes).</French>
|
||||
<Japanese>小型塹壕が削除されるまでの時間 (秒) を設定できます。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para eliminar una trinchera pequeña.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_BigEnvelopeDigDuration_DisplayName">
|
||||
<English>Big Trench Dig Duration</English>
|
||||
<Russian>Продолжительность рытья большого окопа</Russian>
|
||||
<French>Grandes tranchées - durée d'excavation</French>
|
||||
<Japanese>大型塹壕の完成時間</Japanese>
|
||||
<Spanish>Tiempo de cavar trinchera grande</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_BigEnvelopeDigDuration_Description">
|
||||
<English>Time, in seconds, required to dig a big trench.</English>
|
||||
<Russian>Время в секундах, необходимое для рытья большого окопа</Russian>
|
||||
<French>Définit le temps nécessaire au déploiement des grandes tranchées (en secondes).</French>
|
||||
<Japanese>大型塹壕が完成するまでの時間 (秒) を設定できます。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para cavar una trinchera grande</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_BigEnvelopeRemoveDuration_DisplayName">
|
||||
<English>Big Trench Remove Duration</English>
|
||||
<Russian>Продолжительность удаления большого окопа</Russian>
|
||||
<French>Grandes tranchées - durée de retrait</French>
|
||||
<Japanese>大型塹壕の削除時間</Japanese>
|
||||
<Spanish>Tiempo de eliminar trinchera grande</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Trenches_BigEnvelopeRemoveDuration_Description">
|
||||
<English>Time, in seconds, required to remove a big trench.</English>
|
||||
<Russian>Время в секундах, необходимое для удаления большого окопа</Russian>
|
||||
<French>Définit le temps nécessaire pour le retrait des grandes tranchées (en secondes).</French>
|
||||
<Japanese>大型塹壕が削除されるまでの時間 (秒) を設定できます。</Japanese>
|
||||
<Spanish>Tiempo, en segundos, requerido para eliminar una trinchera grande</Spanish>
|
||||
|
@ -161,6 +161,7 @@
|
||||
<English>Development Build Watermark</English>
|
||||
<Russian>Водяной знак Development Build</Russian>
|
||||
<Spanish>Marca de agua para compilación de desarrollo</Spanish>
|
||||
<French>Filigrane version de développement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_UI_WeaponName">
|
||||
<English>Weapon Name</English>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user